Velocity Reviews > Maximum number

# Maximum number

chirs
Guest
Posts: n/a

 10-04-2003
Hi,

What is the maximum number in JavaScript? I tried a large number like
0xff...ff with 30 fs, it still gives me a number, not an infinity. I
use IE6.

Thanks.

Lasse Reichstein Nielsen
Guest
Posts: n/a

 10-04-2003
http://www.velocityreviews.com/forums/(E-Mail Removed) (chirs) writes:

> What is the maximum number in JavaScript? I tried a large number like
> 0xff...ff with 30 fs, it still gives me a number, not an infinity. I
> use IE6.

Javascript uses IEEE-754 double precission floating point numbers.
From the ECMAScript standard:
---
... of them are normalised, having the form
s × m × 2^e
where s is +1 or -1, m is a positive integer less than 2^53 but not less
than 2^52, and e is an integer ranging from -1074 to 971, inclusive.
---
That means that the maiximal number representable as a Javascript number
is
1 * (2^53-1) * 2^971 == 2^1024 - 2^971

0xfffffffffffff80000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000

Writing that hexadecimal number into Javascript, makes it output this
notation:
1.7976931348623157e+308

If you add one more bit, changing the "8" to a "c" in the hexadecimal
notation, Javascript gives "Infinity". Only that bit matters, changing
later bits is simply ignored. That is

0xfffffffffffffbffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffff ffffffff

gives the same result as the above, because all the extra one-bits are
lost due to lack of precission, and they are rounded down.

/L
--
Lasse Reichstein Nielsen - (E-Mail Removed)
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

chirs
Guest
Posts: n/a

 10-05-2003
Thanks a lot for the message.

IEEE-754 double precission floating point numbers are 64 bits. But
how can it use 64 bit number field to store 256 hex digits?

Lasse Reichstein Nielsen
Guest
Posts: n/a

 10-05-2003
(E-Mail Removed) (chirs) writes:

> Thanks a lot for the message.
>
> IEEE-754 double precission floating point numbers are 64 bits. But
> how can it use 64 bit number field to store 256 hex digits?

It doesn't. It only stores 53 significant bits, and then it uses some
more bits to tell how many zeroes comes after those.

That is why
Math.pow(2,52) != Math.pow(2,52)+1
but
Math.pow(2,53) == Math.pow(2,53)+1

It needs 54 bits to represent 2^53+1 precisely. Since there are only 53 bits
available, the least significant bit is lost.

(There are some extra details about how the bits are really used, but
I think they would only confuze matters here
/L
--
Lasse Reichstein Nielsen - (E-Mail Removed)
Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'

Dr John Stockton
Guest
Posts: n/a

 10-05-2003
JRS: In article <(E-Mail Removed) >, seen
in news:comp.lang.javascript, chirs <(E-Mail Removed)> posted at Sat, 4 Oct
2003 12:38:24 :-
>
>What is the maximum number in JavaScript? I tried a large number like
>0xff...ff with 30 fs, it still gives me a number, not an infinity. I
>use IE6.

The maximum value of an object of type Number, etc., is about 1.7E308,
as the native number representation is as an IEEE Double.

But a programmer is free to construct entities using a different
notation, and to do arithmetic differently :

function BigFac(J) { var L = 0, k
for ( k=1 ; k<=J ; k++ ) L += Math.log(k)
L *= Math.LOG10E
return Math.exp((L%1)/Math.LOG10E) + 'E' + Math.floor(L) }

function TryBig() {
document.write('Thus<tt> 3333! = ', BigFac(3333), '<\/tt>') }

gives : Thus 3333! = 1.8497400355653586E10296

All integers up to and including 2^53 = 9007199254740992, and their
negatives, can be represented exactly.

--
<URL:http://jibbering.com/faq/> Jim Ley's FAQ for news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> JS maths, dates, sources.