Emchik
@Emchik
Что-то прикольное сделать могу

Как в JavaScript избежать ошибок округления?

К примеру, есть товар ценой 2000 руб, а доход с этого товара 230 руб в месяц.
Как узнать, через сколько месяцев товар окупит себя?

При делении возможны ошибки округления, из-за которых тот же Math.ceil() даст лишний месяц.
  • Вопрос задан
  • 419 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Вопрос плохо составлен: некоторые, включая меня, в начале решили что школьник не знает математику.
В комментариях выяснилось, что вопрос вызван опасениями проблем ошибок округления дробных чисел.
Но не раскрыты детали – какие значения могут быть введены, что требуется на выходе.

Возможно, достаточно простого округления Math.round() для определения попадания в интервал:
var priceProduct = 2000;
var monthlyPayment = 230;

var precision = 1e-6; // точность одна миллионная

var months = priceProduct / monthlyPayment;
var nearest = Math.round(months);
var diff = months - nearest;
if (diff > precision) months = nearest + 1; // == Math.ceil()


Если уверены, что проблема есть и точность важна – то можно использовать библиотеку для операций с десятичными числами любой точности. Например, decimal.js
Ответ написан
Ваш ответ на вопрос

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

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