Perl - 将数字转换为 2 位小数

Perl - Convert Number to 2 Decimal

我想将数字转换为小数。我一直在使用:

sprintf("%02d", $price / 12);

只是有时候 $price 是一个整数,所以我得到的不是 6,而是 06。我如何确保它转换为小数点后 2 位,但又不在整数前添加零?

sprintf('%.2f', $price/12) =~ s/\.00\z//r       # 5.14+

do { my $s = sprintf('%.2f', $price/12); $s =~ s/\.00\z//; $s }

对于以上两项,

  • 如果 $price/12 == 5.999,计算结果为 6
  • 如果 $price/12 == 6,计算结果为 6
  • 如果 $price/12 == 6.001,计算结果为 6
  • 如果 $price/12 == 6.2,计算结果为 6.20
  • 如果 $price/12 == 6.22,计算结果为 6.22
  • 如果 $price/12 == 6.222,计算结果为 6.22
  • 如果 $price/12 == 6.229,计算结果为 6.23
int( $price / 6 + 0.5 );

Perl 会根据需要自动在字符串和数字之间切换。