JS имеет только один численный тип данных. Будь то целое число или номер плавающей запятой, JS классифицирует его как число.
тип 17; // "число"
Тип 98,6; // "число"
тип 2.1; // "число"
Все числа в JS являются двойными числами с плавающей запятой. Это 64-битный кодированный номер, сформулированный стандартом IEEE754 (что это за вещь, я не знаю, просто посмотрите и проверьте его)
Так как же JS выражает целые числа? Двойные точные номера с плавающей запятой могут идеально представлять целые числа с до 53-битной точностью (без концепции, я не обрабатывал слишком много данных, я не использовал!), И все целые числа от -9007199254740992 (-253) до 9007199254740992 (253) являются правильными номерами с двумя точками.
Большинство арифметических операторов могут быть рассчитаны с использованием целых чисел, реальных чисел или комбинации обоих.
0,1*1,9 //0.19
-99+100 // 1
21-12.3 //8.7
2.5/5 //0.5
21%8 // 5
Арифметические операторы очень особенные. JS напрямую не рассчитывает операнды в виде номеров с плавающей запятой, но неявно преобразует их в 32-разрядные целые числа для выполнения операций. (Чтобы быть точным, он будет преобразован в целое число, представляющее 2 из 32-битных крупных эндиан (если честно, я действительно не знаю, что это значит здесь, пожалуйста, ищите популярную науку)) Используйте бить или эксплуатационные выражения как
пример:
8 | 1; // 9
Процесс вычисления
Прежде всего, 8 и 1 являются двухцветными номерами с плавающей запятой. Но это также может быть представлено как 32-разрядное целое число, то есть 32-битное двоичное представление.
Целое число 8 представлено как 32-битное двоичное как:
0000 0000 0000 0000 0000 0000 0000 1000
Это также может быть
(8) .toString (2); // "1000"
Параметр ToString - это база преобразования
(Ниже я пытался преобразовать с другой кардинальностью, и это не имеет ничего общего с этой статьей)
(8) .toString (8); // "10"
(8) .toString (16); // "8"
Целое число 1 представлено как 32-битное двоичное как:
0000 0000 0000 0000 0000 0000 0000 0000 0001
Бежать кусочка или
0000 0000 0000 0000 0000 0000 0000 1000
0000 0000 0000 0000 0000 0000 0000 0000 0001
----------------------------------------------------------------------------------------------------------------------------
0000 0000 0000 0000 0000 0000 0000 1001
То же самое используется стандартная проверка функции библиотеки и использует 2 в качестве кардинальности. Ведущий 0 не влияет на результат расчета, что не нужно.
Parseint ('1001', 2) // 9
(Ниже я пытался преобразовать с другой кардинальностью, и это не имеет ничего общего с этой статьей)
Parseint ('1001', 8) // 513
Parseint ('1001', 16) // 4097
Процесс суммирования арифметической операции состоит в том, чтобы преобразовать операнды в целые числа, а затем использовать режим целочисленного бита для выполнения операций и, наконец, преобразовать результат в стандартный номер с плавающей запятой JS.
Предупреждение о номерах плавучих точек: общеизвестно неточно. например
0,1+0,2; //0.30000000000000000004
Причина: хотя точность 64-разрядных чисел с плавающей запятой уже очень высокой, числа с плавающей запятой с двумя определениями могут представлять только конечный набор чисел, но не могут представлять все наборы реальных чисел. Операции с плавающей запятой могут давать только приблизительные результаты, округление до ближайшего представительного реального числа. Когда вы выполняете серию операций, когда накапливается ошибка округления, результаты операции станут менее точными. Окружение также вызывает некоторые отклонения в законах арифметических операций. Например, закон обвязки. Для любого реального числа
x, y, z всегда будет удовлетворять (x+y)+z = x+(y+z)
Плавающие точки не обязательно:
(0,1+0,2) +0,3; //0.6000000000000000000001
0,1+ (0,2+0,3); //0.6
Номера с плавающими точками весят точность и производительность. Когда вы заботитесь о точности, будьте осторожны с ограничениями номеров с плавающей запятой.
Решение состоит в том, чтобы преобразовать операции с плавающей запятой в целочисленные операции.
(10+20) +30; // 60
10+ (20+30); // 60
Затем разделите коэффициент увеличения. Обратите внимание, что целый ряд диапазон должен быть в пределах -253 ~ 253.
Суммировать
1. Числа JS-это двойные номера с плавающей запятой.
2. Целое число JS-это всего лишь подмножество чисел с плавающей запятой с двумя рецептами, а не один тип
3. Работа в битах обрабатывает числа как подписанные целые числа 32 бит
4. Остерегайтесь точности операций с плавающей запятой
Приведенная выше статья подробно понимание номеров с плавающими точками в JavaScript-это весь контент, которым я поделился с вами. Я надеюсь, что это может дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.