在Perl中将数字格式化为2位小数的最佳方法是什么?
例如:
10 -> 10.00
10.1 -> 10.10
10.11 -> 10.11
10.111 -> 10.11
10.1111 -> 10.11
答案 0 :(得分:11)
这取决于你想要截断它的方式。
具有%.2f
格式的 sprintf
将执行正常的“一半到一半”。
sprintf("%.2f", 1.555); # 1.56
sprintf("%.2f", 1.554); # 1.55
%f
是一个浮点数(基本上是十进制数),.2
表示只打印两个小数位。
如果要截断,而不是舍入,请使用int
。因为那只会截断为一个整数,所以你必须将它乘以它再除以你想要的十位数的小数位数。
my $places = 2;
my $factor = 10**$places;
int(1.555 * $factor) / $factor; # 1.55
对于任何其他舍入方案,请使用Math::Round。