提高tcl的精度
如何提高tcl中的精度。 我得到下面的b2为-0.000001,而实际值为-7.95553e-007提高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),它就会使用这个代码。在未来,这很可能成为
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只能使用基础数字中实际存在的精度,这取决于使用的算法和任何自定义代码。如果这种精确性消失了,语言运行库将无法对此做任何事情!