console.log((57/100) * 100);
Когда я сделал эту математику в Javascript, она всегда возвращается 56.99999999. Почему его не 57.00000?Почему этот расчет не возвращает целого числа?
console.log((57/100) * 100);
Когда я сделал эту математику в Javascript, она всегда возвращается 56.99999999. Почему его не 57.00000?Почему этот расчет не возвращает целого числа?
Чтобы получить точный ответ, вам нужно будет работать в целых числах или использовать десятичную библиотеку. Существуют некоторые десятичные библиотеки для Javascript, которые вычисляют значения с помощью целых чисел, а затем преобразуют значения обратно в десятичные. Например, есть библиотека BigNumber для Javascript.
Причина этого в том, что раздел (57/100)
возвращает Float или номер с плавающей запятой в Javascript. JavaScript использует 64-bit floating point numbers, который на большинстве систем дает 53 бит точности для представления мантиссы или числовой части поплавка (3.2 в 3.2e4). В большинстве систем используется стандарт с плавающей запятой IEEE-754, который допускает любую ошибку операций с плавающей запятой, если на последнем месте меньше единицы (что в случае IEEE-754 64-бит - это 54-й бит). Поэтому все поплавки обрезаются, округляются и/или усекаются, поэтому результат возвращает дробное число.
Для получения дополнительной информации о том, почему это происходит, вы также можете увидеть: Is floating point math broken?
Это связано с тем, как JavaScript обрабатывает числа с плавающей запятой. Пометить эту тему: How to deal with floating point number precision in JavaScript?
Это проблема не ограничивается Javascript, но точности с плавающей точкой арифметики в целом, http://floating-point-gui.de /. – Xotic750
следуйте этому http://stackoverflow.com/questions/588004/is-javascripts-floating-point-math-broken – Trikaldarshi