【问题标题】:How can I format a number to 2 decimal places in Perl?如何在 Perl 中将数字格式化为小数点后 2 位?
【发布时间】:2016-01-27 17:16:39
【问题描述】:

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

例如:

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

【问题讨论】:

  • printf / sprintf "%.2f"
  • 查看 Perl 常见问题解答learn.perl.org/faq/perlfaq4.html 搜索“小数位”。
  • 小心使用 sprintf 进行舍入。它有时不会正确舍入以 .49 结尾的计算数字,因为 2.49 没有存储为 2.49,而是存储为 2.49999999999999 之类的东西。

标签: perl


【解决方案1】:

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

sprintf%.2f 格式将执行正常的“四舍五入”。

sprintf("%.2f", 1.555);  # 1.56
sprintf("%.2f", 1.554);  # 1.55

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


如果要截断而不是舍入,请使用int。由于这只会截断为整数,因此您必须将其乘以并再次除以您想要的小数位数的 10 次方。

my $places = 2;
my $factor = 10**$places;
int(1.555 * $factor) / $factor;  # 1.55

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

【讨论】:

    猜你喜欢
    • 2011-09-15
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2014-12-05
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多