mrhard
@mrhard
web разработчик

Как победить погрешность при умножении в javascript?

Допустим
alert ( 598.68*100 )
по идее должно быть 59868
но выводит 59867.99999999999
как так выходит?
P/S я знаю функции округления, мне интересно почему так происходит, округление в данной ситуации это костыль.
  • Вопрос задан
  • 275 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что компьютер хранит числа в двоичном представлении.
Значит 598.68 запишется как 1.0001010110(10101110000101000111) * 29
Поскольку дробь бесконечная, а разрядность вычислений нет, то число в памяти компьютера представляется с некоторой погрешностью. При вычислениях эта погрешность, как правило, нарастает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Очень просто, используйте исключительно целые числа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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