2013-09-27 13 views

Odpowiedz

14

W prostym teście, gdy próbuję to:

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

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

Uważam, że x i max mają taką samą wartość (w Chrome, IE i Firefox), więc wygląda na to, że przepełnienia są ustawione na maksymalną wartość. I, y zostaje przypisany do 0, więc niedomiary wydają się być zerowe.

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

+0

Próbowałem z -Number.MAX_VALUE i są one również takie same. Więc nie ma powrotu do minimum i maksimum ... – JVerstry

+0

Dodano również informacje o niedomiaru. – jfriend00

+4

Jednak 'Number.MAX_VALUE * 2' powoduje' Nieskończoność'. "Go figure", jak mówią. –

3

Maksymalna i minimalna jest +/- 9007199254740992

Spróbuj this:

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

Od here: -

pamiętać, że wszystkie dodatnie i ujemne liczby całkowite, których wielkość jest nr powyżej 2 są powtórzone do wyboru w typie Number (w rzeczywistości liczba całkowita 0 ma dwie reprezentacje, +0 i -0).

testu to: -

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

Ok, ale jak JS uchwyt przepełnienie i niedomiarów? – JVerstry

+2

Nie sądzę, że to faktycznie odpowiada na pytanie OP. – jfriend00

+0

@ jfriend00: - Zaktualizowano moją odpowiedź za pomocą linku, który może pomóc. Popraw mnie, jeśli całkowicie brakuje mi oczywistego !!! :) –

Powiązane problemy