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,我怎样才能把它四舍五入?
在 执行操作之前,您需要将 a
或 b
设为双 。此外,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}]
我是 tcl 的新手,我有这些数字:
set a 565056236086
set b 488193341805
$a / $b
的输出是1,157443552992375
当我使用下面的代码时
set num [expr {double(round(100*$a / $b))/100}]
输出为:1,15
但是我想要 1.16,我怎样才能把它四舍五入?
在 执行操作之前,您需要将 a
或 b
设为双 。此外,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}]