我一生都无法弄清楚为什么下面会产生它的结果。
use POSIX;
my $g = 6.65;
my $t = $g * 4;
my $r = $t - $g;
my $n = $r / $g;
my $c = ceil($n);
print "$c ($n)\n";
印记味道不错,我知道——抱歉。
我已经为我的应用程序解决了这个问题,如下所示:
use POSIX;
my $g = 6.65;
my $t = $g * 4;
my $r = $t - $g;
my $n = $r / $g;
my $c = ceil("$n");
print "$c ($n)\n";
......但我很困惑为什么这里有必要。
最佳答案
发生的事情是这样的:$n
包含一个浮点值,因此不完全等于 3
, 在我的电脑上是 3.00000000000000044409
. Perl 足够聪明,可以将其四舍五入为 3
打印时,但当您明确使用浮点函数时,它将完全按照它的广告做:ceil
到下一个整数:4
.
这是处理浮点数的现实,绝不是特定于 Perl 的。您不应该依赖它们的确切值。
关于perl - 在 Perl 中使用 POSIX ceil() 出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379934/