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

tcl expr不像我预期的那样四舍五入,tcl,rounding,expr,Tcl,Rounding,Expr,我是tcl的新手,我有以下数字: 设置一个565056236086 设置b 488193341805 $a/$b的输出为1157443552992375 当我使用以下代码时 set num[expr{double(round(100*$a/$b))/100}] 输出为:1,15 但是我想要1.16,我怎么能这样圆呢?在进行操作之前,您需要将a或b设置为双精度。另外,round返回一个整数,因此您也需要将其转换为double,或者除以double: set num [expr {round(100

我是tcl的新手,我有以下数字:

设置一个565056236086
设置b 488193341805

$a/$b
的输出为1157443552992375

当我使用以下代码时

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

输出为:1,15


但是我想要1.16,我怎么能这样圆呢?

在进行操作之前,您需要将
a
b
设置为双精度。另外,
round
返回一个整数,因此您也需要将其转换为double,或者除以double:

set num [expr {round(100*double($a) / $b)/100.0}]
# 1.16
set num [expr {ceil(100*double($a) / $b)/100}]
# 1.16
或者,如果您特别需要取整,那么您可以使用(因为这个返回一个double,您不需要除以double):


您需要通过确保其中一个或两个值都是double(例如,使用double($a)和/或double($b))来确保进行浮点除法。然后,使用format(格式)最容易舍入到一定数量的十进制数字:

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

您是要用该值进行进一步计算,还是要显示?