2013-09-27 19 views

risposta

14

In un semplice test, quando provo questo:

var max = Number.MAX_VALUE; 
var x = max + 10; 

var min = Number.MIN_VALUE; 
var y = min/10; 

trovo che x e max hanno lo stesso valore (in Chrome, IE e Firefox), quindi sembra che gli overflow siano semplicemente ancorati al valore massimo. E, viene ancorato a 0, quindi i flussi in entrata sembrano andare a zero.

Demo: http://jsfiddle.net/jfriend00/hH3pT/

+0

Ho provato con -Numero.MAX_VALUE e sono uguali. Quindi non tornare al minimo e al massimo ... – JVerstry

+0

Aggiunte anche le informazioni per l'underflow. – jfriend00

+4

Eppure 'Number.MAX_VALUE * 2' risulta in' Infinito'. "Vai a capire" come si suol dire. –

3

il massimo e minimo è +/- 9007199254740992

Prova this:

alert([Number.MAX_VALUE, Number.MIN_VALUE]); 

Da here: -

Si ricorda che tutti i numeri interi positivi e negativi la cui grandezza è no superiore a 2 sono rappresentanti risentibile nel tipo Numero (infatti, il numero intero ha due rappresentazioni, +0 e -0).

Verifica questo: -

var x = 9007199254740992; 
var y = -x; 
x == x + 1; // true ! 
y == y - 1; // also true ! 
+0

Ok, ma come fa JS maniglia di overflow e underflow? – JVerstry

+2

Non penso che questo in realtà risponda alla domanda dell'OP. – jfriend00

+0

@ jfriend00: - Aggiornato la mia risposta con un link che può aiutare. Correggi se mi manca completamente l'ovvio !!! :) –