Задать вопрос
@Nadoedalo

Компьютерная неточность JS

Есть проблема - иногда клиентам не добавляет копейку.
Например при попытке умножить 299 на 8.655 (доллары и курс) получается 2587.845 . Что бы правильно округлить используется Math.round(x * 100)/100. Проблема возникает тогда, когда умножаешь 2587.845 на 100, получается 258784.49999999997, что при округлении даёт 2587.84.

Посоветуйте пожалуйста каким способом вы решаете эти проблемы? Какая нибудь математическая либа, которая относится к числам как к строкам? mathjs не помогает.
Текущее решение - перенести важные вычисления на более точный бэкэнд.

Код для примера
var x = 299 * 8.655;
console.log(x, Math.round(x * 100)/100, x * 100)
>>> 2587.845, 2587.84, 258784.49999999997
  • Вопрос задан
  • 2931 просмотр
Подписаться 2 Оценить Комментировать
Ответ пользователя Rsa97 К ответам на вопрос (7)
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Math.round(299*8655/10)/100
Ответ написан
Комментировать