如何避免在perl中产生很小的计算错误

问题描述 投票:0回答:1
my $a = 243300;
my $b = 3000;
my $c = 81.10;

if (($a - $b * $c) != 0) {
    warn "delta is " . ($a - $b * $c);
} else {
    print "OK\n";
}

结果产生的差异很小:

Mac: ~ # perl f.pl
delta is 2.91038304567337e-11 at f.pl line 6.

我可以通过与0.01进行比较来解决,但是如何避免这样的问题以及如何产生很小的差异?

perl numeric
1个回答
0
投票

您可以使用Math::BigRatMath::BigRat之类的任意精度数字程序包,但这会带来很大的性能损失。

Math::Decimal

Math::Decimal
© www.soinside.com 2019 - 2024. All rights reserved.