加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl:如何比较浮点数

发布时间:2020-12-15 23:27:25 所属栏目:大数据 来源:网络整理
导读:我写了以下Perl脚本.但是,它不会打
我写了以下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

解决方法

所有使用浮点数的计算都可能存在精度错误,如果重复使用结果,那些精确错误就会叠加.从中学到的一件事是永远不要使用float作为循环控制变量.

使用类似的东西

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

无论你怎么做.如果你真的需要比较两个花车($a,$b)之类的东西

if (abs($a - $b) < 0.000001)

是唯一真正有用的东西 – 然而,这也可能有问题,这取决于差异可以算作真正差异的程度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读