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) 是唯一真正有用的东西 – 然而,这也可能有问题,这取决于差异可以算作真正差异的程度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |