470,864 Members | 1,997 Online

# really big integer

I need to calculate the sum of the following numbers

1+ 11 + 111 + 1111 + ......+ 1111.....11111 (the last one is a number

so, I wrote
\$res =0;
for (\$i = 1; \$i<2003; \$i++){
echo str_repeat("1", \$i).'<br>';
\$res += str_repeat("1", \$i);
}

echo \$res;

All works pretty well, and after a really small piece of time, I get:

1.2345679012346E+308

but the result seems to be wrong, beacause I do know (given that I have
a math proof), that it should have 224 1's inside, and as fas as I
know,

1.2345679012346E+308 means 1.2345679012346 * 10^308

which obviously doesn't have such amount of 1's (in fact only has 2 )

Can anyone point me where is the mistake?

sdos - jm

Mar 17 '06 #1
1 1253
julian_m said the following on 17/03/2006 20:02:
I need to calculate the sum of the following numbers

1+ 11 + 111 + 1111 + ......+ 1111.....11111 (the last one is a number

so, I wrote
<...SNIP...> All works pretty well, and after a really small piece of time, I get:

1.2345679012346E+308

but the result seems to be wrong
Can anyone point me where is the mistake?

You can't fully represent a number with 2000-ish significant digits with
normal integers or floats, nor can you represent a number bigger than
~10^308 with floats. So that's two reasons why this doesn't work!

You'll need to use an arbitrary-length integer library, e.g. BCMath.
--
Oli
Mar 17 '06 #2

### This discussion thread is closed

Replies have been disabled for this discussion.