如何检查一个浮点数是否大于Perl中的另一个数字?
即:100.4> 90
我尝试使用use POSIX
,将100.4舍入为101.0并使用int转换它们,但Perl仍然认为我的100.4小于90.
编辑:错误发生在其他地方。私密的代码有时让我感到真实,有时也是假的。
答案 0 :(得分: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'
(字符串比较char-by-char )。
解决方案很简单:在处理数字时覆盖排序例程。
print $_, "\n" for sort { $a <=> $b } @floats;
# 9
# 50
# 100.4