Какое наибольшее целочисленное значение в JavaScript может быть достигнуто числом без потери точности?

Вы хотите проверить отсутствие сетевого подключения или просто медленное сетевое соединение? Если первое, вы можете перейти к Settings > Wireless & networks > Airplane mode и включить режим полета. Это позволит вам проверить недоступность сети на реальном устройстве.

900
задан Peter Mortensen 6 October 2017 в 22:20
поделиться

5 ответов

+ Раздел/-9007199254740991

ECMA 8.5 - Числа

Примечание, что все положительные и отрицательные целые числа, величина которых не больше, чем 2 <глоток> 53 , являются представимыми в типе Числа (действительно, целое число 0 имеет два представления, +0 и в€ ’0).

Они - 64-разрядные значения с плавающей точкой, самое большое точное интегральное значение 2 <глоток> 53 -1, или 9007199254740991. В ES6 это определяется как Число. MAX_SAFE_INTEGER.

Примечание, что побитовые операторы и операторы сдвига управляют на 32-разрядном ints, так в этом случае, макс. безопасным целым числом, 2 <глоток> 31 -1, или 2147483647.

<час> Проверяют его!
var x = 9007199254740992;
var y = -x;
x == x + 1; // true !
y == y - 1; // also true !
// Arithmetic operators work, but bitwise/shifts only operate on int32:
x / 2;      // 4503599627370496
x >> 1;     // 0
x | 1;      // 1
<час>

Техническое примечание на предмет номера 9007199254740992: существует точное представление IEEE 754 этого значения, и можно присвоить и считать это значение из переменной, таким образом, для очень тщательно выбранные приложения в домене целых чисел, меньше чем или равных этому значению, Вы могли рассматривать это как максимальное значение.

В общем случае, необходимо рассматривать это значение IEEE 754 как неточное, потому что это неоднозначно, кодирует ли это логическое значение 9007199254740992 или 9007199254740993.

822
ответ дан Jimmy 6 October 2017 в 22:20
поделиться

Firefox 3, кажется, не имеет проблему с огромными числами.

1e+200 * 1e+100 вычислит прекрасный к 1e+300.

Safari, кажется, не имеют никакой проблемы с ним также. (Для записи это находится на Mac, если кто-либо еще решает протестировать это.)

, Если я не потерял мозг в это время суток, это - путь, больше, чем 64-разрядное целое число.

-7
ответ дан Peter Mortensen 6 October 2017 в 22:20
поделиться

Я сделал простой тест с формулой, X-(X+1) =-1, и самое большое значение X, я могу взяться за работу над Safari, Opera и Firefox (протестированный на OS  X) 9e15. Вот код, который я использовал для тестирования:

javascript: alert(9e15-(9e15+1));
4
ответ дан Peter Mortensen 6 October 2017 в 22:20
поделиться

> = ES6:

Number.MIN_SAFE_INTEGER;
Number.MAX_SAFE_INTEGER;

< = ES5

От ссылка :

Number.MAX_VALUE;
Number.MIN_VALUE;

console.log('MIN_VALUE', Number.MIN_VALUE);
console.log('MAX_VALUE', Number.MAX_VALUE);

console.log('MIN_SAFE_INTEGER', Number.MIN_SAFE_INTEGER); //ES6
console.log('MAX_SAFE_INTEGER', Number.MAX_SAFE_INTEGER); //ES6
448
ответ дан laike9m 6 October 2017 в 22:20
поделиться

Попробуйте:

maxInt = -1 >>> 1

В Firefox 3.6 это 2 ^ 31 - 1.

5
ответ дан 19 December 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: