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