【发布时间】:2013-11-15 07:02:26
【问题描述】:
由于浮点数,我在 Perl (v5.10.1) 中的计算遇到了一些问题:
#!/usr/bin/perl
use strict;
use warnings;
use POSIX;
my $x1 = 1500;
my $x0 = 1000;
my $dx = 100/3;
print "($x1-$x0)/$dx \n"; #(1500-1000)/33.3333333333333
print my $a=(($x1-$x0)/$dx), "\n"; #15
print my $b=floor(($x1-$x0)/$dx), "\n"; #14
print my $c=floor($a), "\n"; #14
print floor(15), "\n"; #15
print my $d=floor(sprintf("%.0f", ($x1-$x0)/$dx)), "\n"; #15
为什么有时输出 14?值 15 不是像 $a 中显示的那样保存,因此在值 15 上使用了 floor? $a 和$c 的对比让我很疑惑……
我阅读了this,但无法弄清楚。我还找到了sprintf 的解决方法,我认为这不是很方便。
【问题讨论】:
标签: perl floating-point rounding floor