my $numerator = Math::BigFloat->new($rho)->bpow(Math::BigFloat->new($c[$i])); my $denominator = Math::BigFloat->new(Factorial($c[$i], \@fact))->bmul($G); printf("numerator: %s\n", $numerator ); printf("denominator: %s\n", $denominator ); my $x = $numerator->copy(); $x->accuracy(10); print scalar $x->bdiv($denominator), "\n"; $x = $numerator->copy(); $x->accuracy(1000); print scalar $x->bdiv($denominator), "\n"; exit(); Output: numerator: 131254331066182.0671680983636563623093384645074900631038196916724632735210716611428572612616761979022584315623777773238891425361932674318752893801 denominator: 200000000000000 1.6 #<--- Way wrong should be around .65