提高tcl的精度

提高tcl的精度,tcl,Tcl,如何提高tcl中的精度。 我得到下面的b2为-0.000001,而实际值为-7.95553e-007 set b2 [lindex $b1 0] 我尝试过“设置tcl_precision 12”,但它没有改变任何东西。如今,tcl使用浮点渲染系统,这意味着默认情况下,当双精度浮点数自动转换为字符串并返回时,它不会丢失任何精度,同时使用字符串中的最小小数位数。从Tcl 8.5开始,它就有了这个代码,只要Tcl_precision全局变量设置为默认值(0),它就会使用这个代码。在未来,这很可能成为

如何提高tcl中的精度。 我得到下面的b2为-0.000001,而实际值为-7.95553e-007

set b2 [lindex $b1 0]

我尝试过“设置tcl_precision 12”,但它没有改变任何东西。如今,tcl使用浮点渲染系统,这意味着默认情况下,当双精度浮点数自动转换为字符串并返回时,它不会丢失任何精度,同时使用字符串中的最小小数位数。从Tcl 8.5开始,它就有了这个代码,只要
Tcl_precision
全局变量设置为默认值(
0
),它就会使用这个代码。在未来,这很可能成为核心违约,但我认为它还没有做到

较旧版本的Tcl(目前均不受支持)使用
Tcl\u precision
global来控制使用的小数位数;将其设置为非零值仍然具有向后兼容性的效果。旧的默认值是15,这通常是正确的,但17确保了信息永远不会丢失,即使在复杂的边缘情况下也是如此,但代价是通常在最后生成有效的噪声数字。(这是base-2和base-10中的算术差异的结果,对于所有使用IEEE二进制浮点数学的语言来说都是通用的。)

如果您要在点后使用一定数量的十进制数字,因为您要生成供人使用的输出,则应使用
format
命令

format %.5f 1.23; # >>> 1.23000

什么是
b1
,这些值是如何计算的?b1是我的结构分析程序的输出,称为:set b1[eleResponse$eleNum defoANDforce]你能控制它的计算方式吗?
lindex
与数字的精度无关。将值存储到
b1
列表中的过程是您需要查看的地方。感谢澄清,CL只能使用基础数字中实际存在的精度,这取决于使用的算法和任何自定义代码。如果这种精确性消失了,语言运行库将无法对此做任何事情!