如何提高tcl的精度。 我将下面的b2设为-0.000001,而实际值为-7.95553e-007
set b2 [lindex $b1 0]
我尝试了“ set tcl_precision 12”,但它没有任何改变
答案 0 :(得分:0)
这些天以来,Tcl使用浮点渲染系统,这意味着默认情况下,当双精度浮点数自动转换为字符串并返回时,同时使用最小的十进制数字时,它永远不会丢失任何精度。字符串。自Tcl 8.5起,它就具有此代码,并且每当tcl_precision
全局变量设置为其默认值时(这些天0
)都使用它。将来,这很可能会成为硬性默认设置,但我认为还没有这样做。
Tcl的较早版本(当前不支持所有版本)改为使用全局tcl_precision
来控制所使用的十进制数字;将其设置为非零值仍然具有向后兼容的效果。旧的默认值是15,通常通常做正确的事,但是17确保即使在棘手的边缘情况下也不会丢失任何信息,但会在最后经常产生有效的噪声数字。 (这是base-2和base-10中的算术差异的结果,并且对于使用IEEE二进制浮点数学的所有语言都是正确的。)
如果由于要生产供人消费的输出而要在该点后使用一定数量的十进制数字,则应使用format
命令。
format %.5f 1.23; # >>> 1.23000