Вход

Просмотр полной версии : Проблемы с плавающей запятой


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, это скорее текст чем число и избежишь подводных камней в сравнениях и проверках плавающих чисел.