tcl expr 没有像我期望的那样四舍五入

tcl expr not rounding like i expect

我是 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 returns 一个整数,因此您也需要将其转换为双精度,或者除以双精度:

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

或者如果你特别需要向上取整,那么,你可以使用ceil(因为这个returns是double,你不需要除以double):

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

您需要通过确保其中一个值或两个值都是双精度值(例如使用 double($a) and/or double($b))来确保进行浮点除法。然后四舍五入到一定数量的小数位数最容易用格式完成:

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