TCL expr 不像我预期的那样四舍五入



我是tcl的新手,我有这些数字:

set a 565056236086 set b 488193341805

$a / $b的输出为 1,157443552992375

当我使用以下代码时

set num [expr {double(round(100*$a / $b))/100}]

输出为:1,15

但是我想要 1.16 我怎么能这样四舍五入?

执行操作之前,您需要将ab设为双精度。此外,round返回一个整数,因此您需要将其转换为双精度,或者除以双精度:

set num [expr {round(100*double($a) / $b)/100.0}]
# 1.16

或者,如果您特别需要四舍五入,则可以使用 ceil(由于这个返回双精度,因此不需要除以双精度(:

set num [expr {ceil(100*double($a) / $b)/100}]
# 1.16
您需要通过

确保其中一个值或两个值都是双精度值(例如,使用 double($a( 和/或 double($b((来确保你正在执行浮点除法。然后四舍五入到一定数量的十进制数字最容易使用格式完成:

format %.2f [expr {double($a) / $b}]

相关内容

  • 没有找到相关文章

最新更新