我有一个 Perl 程序,它处理的概率有时可能非常小。由于舍入误差,有时其中一个概率为零。我想做以下检查:
use constant TINY_FLOAT => 1e-200;
my $prob = calculate_prob();
if ( $prob == 0 ) {
$prob = TINY_FLOAT;
}
这工作得很好,但我实际上看到 Perl 生成的数字小于 1e-200(我刚刚看到一个 8.14e-314 飞过)。对于我的应用程序,我可以更改calculate_prob(),以便它返回 TINY_FLOAT 的最大值和实际概率,但这让我对 Perl 中如何处理浮点数感到好奇。
Perl 中最小的正浮点值是多少?它与平台相关吗?如果是这样,是否有一个快速程序可以用来在我的机器上计算出来?
根据perldoc perlnumber,Perl 使用本机浮点格式,其中本机被定义为用于编译它的任何 C 编译器。如果您更担心精度/准确度而不是速度,请查看bignum.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)