2013-06-04 7 views
0

Мне было интересно, что такое ограничения с плавающей запятой JavaScript. У меня есть следующий код, который не возвращает подробный результат с плавающей запятой, как в:JavaScript с плавающей запятой

2e-2 is the same as 0.02 



var numero = 1E-12; 
document.write(numero); 

возвращает 1e-12.

Каков максимальный экспоненциальный результат, который может обрабатывать JavaScript?

ответ

3

JavaScript - это реализация ECMAScript, указанная в Ecma-262 и ISO/IEC 16262. Ecma-262 указывает, что используется 64-разрядная двоичная с плавающей точкой IEEE 754.

В этом формате, наименьшее положительное число равно 2 -1074 (чуть более 4.94e-324), и самое большое конечное число равно 2 -2 (слегка под 1.798e308). Бесконечность может быть представлена, поэтому в этом смысле нет верхнего предела для значения числа в JavaScript.

Номера в этом формате имеют не более 53 бит в своих знаменателях (части фракций). (Числа под 2 -1022 являются субнормальными и имеют меньшее количество бит.) Ограниченное количество бит означает, что многие числа не являются точно отображаемыми, включая .02 в вашем примере. Следовательно, результаты арифметических операций округляются до ближайших представимых значений, а ошибки в цепочках вычислений могут отменяться или накапливаться даже катастрофически.

Формат также включает в себя некоторые специальные объекты, называемые NaN (для не числа). NaN могут использоваться для указания того, что число не было инициализировано, для специальных целей отладки или для представления результата операции, для которой не подходит число (например, квадратный корень из -1).

0

Максимальное, что меньше нуля ..?

Существует подробное обсуждение here. В принципе, показатель 0.00000x будет отображаться экспоненциально (5 нулей после десятичной).

Конечно, вы можете проверить это сами;) в частности, чтобы убедиться, что это поведение является надежным кросс-браузером.

Лично я не думаю, что вы должны беспокоиться или полагаться на это поведение. Когда вы приходите, чтобы отобразить число, просто отформатируйте его соответствующим образом.

Смежные вопросы