Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблемы с плавающей запятой (https://javascript.ru/forum/misc/64887-problemy-s-plavayushhejj-zapyatojj.html)

Faab 12.09.2016 09:21

Проблемы с плавающей запятой
 
Проблема:
var i_devision = 100/3;
console.log(i_devision); // 33.3333333333336


Сейчас решаю это просто отсеканием
i_devision.toFixed(12)


На хабре читал что должно помочь простое деление на 10 , а потом снова умножение на 10 - мне не помогло.

Как нужно поступать в таких ситуациях при делении?

Faab 12.09.2016 09:49

Дело скорее не в количестве знаков, а в поведении скрипта при делении - выдаётся неверный результат.

var i_result = Math.ceil( ( 100 / 3 ) * 1.05 );
console.log(i_result); // 36


Хотя любой калькулятор ответит 35. Я просто хочу в будущем избежать таких подводных камней. Мне теперь всегда при делении пользоваться n.toFixed(12) ?

Проблема вроде как банальная - должно быть надёжное решение...

Faab 12.09.2016 10:01

Спасибо, Rise.

Ну значит интуитивно я выбрал правильное решение. Теперь буду всегда отсекать - n.toFixed(12) . Век живи - век учись.

warren buffet 13.09.2016 04:48

Faab, привыкни к мысли, что float, это скорее текст чем число и избежишь подводных камней в сравнениях и проверках плавающих чисел.


Часовой пояс GMT +3, время: 02:23.