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

Dev*_*wal 3 perl

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

例如:

10      -> 10.00
10.1    -> 10.10
10.11   -> 10.11
10.111  -> 10.11
10.1111 -> 10.11
Run Code Online (Sandbox Code Playgroud)

Sch*_*ern 16

这取决于你想如何截断它.

sprintf%.2f格式会做正常的"圆的一半甚至是".

sprintf("%.2f", 1.555);  # 1.56
sprintf("%.2f", 1.554);  # 1.55
Run Code Online (Sandbox Code Playgroud)

%f是一个浮点数(基本上是一个十进制数),并.2表示只打印两个小数位.


如果你想截断,而不是圆,那么使用int.因为那只会截断为一个整数,你必须将它乘以它再次除以你想要的十位幂的小数位数.

my $places = 2;
my $factor = 10**$places;
int(1.555 * $factor) / $factor;  # 1.55
Run Code Online (Sandbox Code Playgroud)

对于任何其他舍入方案,请使用Math :: Round.