Поддерживает ли Javascript целое переполнение и недополнение? Если да, то как?
Мы знаем, что Java не обрабатывает недоисполнения и переполнения, но как Javascript обрабатывает их для целых чисел?
Вернется ли он к минимуму/максимуму? Если да, то какой минимум/максимум?
Мне нужно разбить строку и вычислить хэш-значение на основе его символов.
Ответы
Ответ 1
В простом тесте, когда я пытаюсь это сделать:
var max = Number.MAX_VALUE;
var x = max + 10;
var min = Number.MIN_VALUE;
var y = min / 10;
Я нахожу, что x
и max
имеют одинаковое значение (в Chrome, IE и Firefox), поэтому кажется, что переполнение просто привязано к максимальному значению. И y
получает привязку к 0
, поэтому переполнение кажется равным нулю.
Демо: http://jsfiddle.net/jfriend00/hH3pT/
Ответ 2
Максимальный и минимальный +/- 9007199254740992
Попробуйте this:
alert([Number.MAX_VALUE, Number.MIN_VALUE]);
Из здесь: -
Заметим, что все положительные и отрицательные целые числа, величина которых отсутствует больше 2 53 представляются в типе Number (действительно, целое число 0 имеет два представления, +0 и -0).
Проверьте это: -
var x = 9007199254740992;
var y = -x;
x == x + 1; // true !
y == y - 1; // also true !