Вы можете использовать числовой пакет произвольной точности, например Math::BigRat
, Math::BigFloat
или Math::Decimal
, но это будет значительное снижение производительности.
use Math::Decimal qw(dec_sub dec_mul);
my ($a,$b,$c,$delta);
$a = 243300;
$b = 3000;
$c = 81.10;
$delta = dec_sub($a, dec_mul($b,$c));
if ($delta != 0) {
warn "delta [M::D]is $delta\n";
} else {
print "OK [M::D]\n";
}
use Math::BigRat;
$a = Math::BigRat->new(243300);
$b = Math::BigRat->new(3000);
$c = Math::BigRat->new(81.10);
$delta = $a - $b * $c;
if ($delta != 0) {
warn "delta [M::BR]is $delta\n";
} else {
print "OK [M::BR]\n";
}