tcl_precision的状态是什么?

Don*_*eld 5 floating-point tcl floating-accuracy ieee-754

我在日常工作中不使用Tcl.但是,我有一位同事偶尔会与希望我们工具的扩展语言更像Tcl(!)的客户进行交互.他提出的一个主题是Tcl如何让他通过全局变量tcl_precision 设置存储在double中的精度.

我做了一些网络搜索,我发现的文档肯定似乎是这种情况(而不仅仅是设置打印精度).然而,看起来好像tcl_precision有一个方格的历史.我得到的印象是它完全被移除一个或两个版本,然后放回去,但有关于覆盖默认值0的警告和tut-tuts,这实际上意味着17(手册承诺足以代表任何IEEE 754双).

那么有谁可以告诉我更多关于tcl_precision 实际承诺做什么,以及它对双重覆盖的双打有什么影响?它只是打印数字的全局设置,还是实际上截断了存储的数字精度(这对我来说似乎很危险)?

jk.*_*jk. 2

其他答案是正确的,tcl_ precision 控制浮点 - >字符串转换。

然而真正的问题(也是你不应该搞乱 tcl_ precision 的原因)是 TCL 的EIAS哲学使得这种转换不仅仅在显示时完成,即你可以在字符串中构建一个表达式,然后对其进行 expr 或构建一个要评估的字符串中的脚本。单独保留 tcl_precicion 意味着到字符串的转换是可逆的,这在这些情况下显然很重要。

话虽如此,如果您的客户依靠更改 tcl_presicion 来更改计算,他们可能并不真正知道自己在做什么。您可能想看看是否可以找到他们真正想做的事情的更多细节。