Calculate 100 factorial with all the digits
bigint, factorial, perl
Solution
Doubles (which most Perls use) only have ~16 digits of precision. You need to use another system to get the 158 digits of precision you need.
use bigint;
This will cause Perl to automatically treat all numbers in your script as `Math::BigInt` objects.
If you need finer control (to treat some numbers as `BigInt` and some numbers as floating point) then see Krishnachandra Sharma's solution and explicitly use the `Math::BigInt` constructor.
`Math::BigInt` has a builtin factorial function, by the way:
$ perl -MMath::BigInt -e 'print Math::BigInt->bfac(100)'
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Problem
I came across a problem of calculating 100 factorial. Here is what I tried first in Perl to calculate 100! : ``` #!/usr/bin/perl use strict; use warnings; use Math::BigInt; my $n=<>; chomp($n); print fac($n); sub fac { my ($m) = @_; return 1 if($m <=1 ); return $m*fac($m-1); } ``` But this is giving me `9.33262154439441e+157`. I need the answer with all of the digits. What do I do?