10

我需要将一个数字四舍五入到小数点后两位。现在,我猜以下四舍五入到最接近的整数

puts [expr {round($total_rate)}]

如果我做类似下面的事情它不起作用。还有其他方法吗?

puts [expr {round($total_rate,2)}]
4

3 回答 3

17

四舍五入到特定小数位数的最简单方法是format

puts [format "%.2f" $total_rate]

请注意,如果您使用舍入值进行进一步计算而不是显示给用户,则使用舍入到X位小数位打印的大多数值将不会在二进制算术中具有精确表示(Tcl 在内部使用,如大量其他编程语言)。最好将四舍五入保留到特定数量的 DP,直到您向人们展示价值。

于 2012-04-19T09:37:22.577 回答
15
expr {double(round(100*$total_rate))/100}

例子

% set total_rate 1.5678
1.5678
% expr {double(round(100*$total_rate))/100}
1.57
% set total_rate 1.4321
1.4321
% expr {double(round(100*$total_rate))/100}
1.43
于 2012-04-18T15:23:51.250 回答
3
puts [format "%.2f" $total_rate]

通过使用格式,我们可以在输出中看到结果,但是如何在程序中使用相同的值,即,我们可以在输出中看到 1.448 和 1.45,但我们可以在程序中使用 1.45。

于 2016-04-08T06:55:26.973 回答