如何在Perl中将数字格式化为2位小数?

时间:2016-01-27 17:16:39

标签: perl

在Perl中将数字格式化为2位小数的最佳方法是什么?

例如:

10      -> 10.00
10.1    -> 10.10
10.11   -> 10.11
10.111  -> 10.11
10.1111 -> 10.11

1 个答案:

答案 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