圆数到小数点后2位

Mic*_*eal 10 tcl rounding

我需要将数字四舍五入到小数点后两位.现在以下几轮到我猜的最接近的整数

puts [expr {round($total_rate)}]
Run Code Online (Sandbox Code Playgroud)

如果我做下面的事情就行不通.还有另外一种方法吗?

puts [expr {round($total_rate,2)}]
Run Code Online (Sandbox Code Playgroud)

Don*_*ows 15

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

puts [format "%.2f" $total_rate]
Run Code Online (Sandbox Code Playgroud)

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


gle*_*man 13

expr {double(round(100*$total_rate))/100}
Run Code Online (Sandbox Code Playgroud)

% 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
Run Code Online (Sandbox Code Playgroud)

  • `proc tcl::mathfunc::roundto {value decimalplaces} {expr {round(10**$decimalplaces*$value)/10.0**$decimalplaces}}; expr {roundto($total_rate, 2)}` (2认同)