在tcl中,如何获得给定数字的小数部分
在tcl代码中,我想得到给定数字的小数部分 我尝试了以下代码在tcl中,如何获得给定数字的小数部分,tcl,Tcl,在tcl代码中,我想得到给定数字的小数部分 我尝试了以下代码 set a 2.9999383 expr {fmod($a,1)} gives me 0.9999383000000002 如何在不增加小数位数的情况下获得正确的小数部分 谢谢,浮动是不精确的估计。这些“额外数字”仅仅是系统试图在以2为基数的系统中逼近小数点的最佳结果 您可以舍入浮动以去除尾随的2: format "%.2f" $a 您可以使用字符串拆分,否则我猜: set a 2.9999383 set fraction "
set a 2.9999383
expr {fmod($a,1)} gives me 0.9999383000000002
如何在不增加小数位数的情况下获得正确的小数部分
谢谢,浮动是不精确的估计。这些“额外数字”仅仅是系统试图在以2为基数的系统中逼近小数点的最佳结果 您可以舍入浮动以去除尾随的2:
format "%.2f" $a
您可以使用字符串拆分,否则我猜:
set a 2.9999383
set fraction "0.[lindex [split $a "."] 1]"
puts $fraction
0.9999383
这将避免看到分数是否变形和/或是否需要舍入。您已经发现了使用浮点数的乐趣!诀窍是猜测浮点后面有多少位(不必太精确!),并将其与
格式
一起使用以进行舍入
format "%.*g" [string length $a] [expr {fmod($a, 1.0)}]
这将使用您的测试数据生成0.9999383
,但对输入很少进行假设