i just used this with N=400 and got a 1638 decimal place e, then with N=500 and got a 2145 decimal place e:
use Math::BigFloat;
$N = shift || 100;
$e = Math::BigFloat->new(1);
$fac = Math::BigFloat->new(1);
for $i (1 .. $N)
{
$fac *= $i;
$e += 1 / $fac;
}
print $e, $/;
my computer is too slow to wait for it to go any higher. i don't know how far you can take it out.
the number of digits seems to increase with the size of N but i don't know why, nor at what rate this happens.
p.s. the result of this code looks to me like e, but i have no idea how accurate it is (beyond being basically accurate, i.e. about 2.71828). i compared it to a 10000 digit calculation of e i found on the Net, and it was only the same up to about 40 decimal places. if you're doing this to get an accurate value of e for later use, i would recommend just finding a calculated and verified version of it on the web (or use the version posted by IO in another response to this parent thread, which, as far as i can tell, reliably generates the actual digits of e). if you're just doing this for fun, then have a blast.