-4

如何检查一个浮点数是否大于 Perl 中的另一个数字?

即:100.4 > 90

我尝试使用use POSIX,将 100.4 舍入为 101.0 并用 int 转换它们,但 Perl 仍然认为我的 100.4 小于我的 90。

编辑:错误在其他地方。privious 代码返回给我有时是真的,有时是假的。

4

1 回答 1

3

不,Perl 不会“认为”那样,这很容易检查:

print 100.4 > 90 ? 'Greater' : 'Lesser'; # Greater

我的(疯狂的)猜测是,您尝试对浮点数组进行排序,并在 90 之前得到 100.4。例如,像这样:

my @floats = (100.4, 50, 9);
print $_, "\n" for sort @floats; 
# 100.4
# 50
# 9

问题是默认情况下 Perl 在sort. 所以 100.4 和 90 都首先转换为字符串,并且'100.4'确实小于'9',因为'1'小于'9'(字符串是逐个字符比较的)。

解决方案很简单:在处理数字时覆盖排序例程。

print $_, "\n" for sort { $a <=> $b } @floats; 
# 9
# 50
# 100.4
于 2013-09-08T15:46:09.453 回答