由于浮点数,我在 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
并因此用于floor
值 15 吗?$a
和的对比$c
真的让我很疑惑……
我读了这个,但无法弄清楚。sprintf
我还发现了在我看来不是很方便的解决方法。