Есть вот такая функция в React:
export const getTotalPrice = state =>{
let totalPrice = 0
state.basket.map((item) => totalPrice = totalPrice + parseFloat(item.price.toFixed(2)) )
return totalPrice
}
По сути я из корзины state.basket узнаю полную стоимость заказа прибавляя каждый раз item.price в переменную totalPrice , числа все ХХ.99, в данном случае 139.99, нажимая на кнопку добавить еще один такой элемент стоимость заказа пересчитывается и в результате сложив 13 раз число 139.99 я получаю $1819.8700000000001.
Что я делаю не так?
Нужно toFixed() применять к результату
totalPrice = (totalPrice + parseFloat(item.price)).toFixed(2)
Поскольку в двоичной системе невозможно точно представить овердофига дробных чисел, то цены лучше хранить в копейках (-> целые числа) и форматировать при выводе (разделив на 100). Тогда можно сколько угодно раз складывать что угодно и результат всегда будет верным.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости