gpt4 book ai didi

Perl:如何比较 float

转载 作者:行者123 更新时间:2023-12-04 16:39:43 25 4
gpt4 key购买 nike

我编写了以下 Perl 脚本。但是,它不会打印“1”。我做了一些研究,似乎是因为浮点数的 IEEE 表示。那么,有没有更好的方法来比较 Perl 中的浮点数?

for (my $tmp = 0.1; $tmp <= 1; $tmp+=0.05){print $tmp."\n"}

输出:
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95

最佳答案

所有使用浮点数的计算都可能有精度误差,如果重复使用结果,这些精度误差就会累积起来。从中学到的一件事是永远不要使用浮点数作为循环控制变量。

使用类似的东西

for (my $tmp=2; $tmp<=20; tmp++) {
print $tmp/20.0, "\n";
}

无论你在哪里。如果你真的需要比较两个浮点数 ($a, $b)就像是
if (abs($a - $b) < 0.000001)

是唯一真正有效的东西——然而,这也可能有问题,这取决于差异有多小才能算作真正的差异。

关于Perl:如何比较 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com