如何检查一个浮点数是否大于 Perl 中的另一个数字?
即:100.4 > 90
我尝试使用use POSIX
,将 100.4 舍入为 101.0 并用 int 转换它们,但 Perl 仍然认为我的 100.4 小于我的 90。
编辑:错误在其他地方。privious 代码返回给我有时是真的,有时是假的。
如何检查一个浮点数是否大于 Perl 中的另一个数字?
即:100.4 > 90
我尝试使用use POSIX
,将 100.4 舍入为 101.0 并用 int 转换它们,但 Perl 仍然认为我的 100.4 小于我的 90。
编辑:错误在其他地方。privious 代码返回给我有时是真的,有时是假的。
不,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