Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2016, 09:21
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

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


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


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

Как нужно поступать в таких ситуациях при делении?
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2016, 09:38
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Faab, до какого знака надо округлять?
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2016, 09:49
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

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

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


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

Проблема вроде как банальная - должно быть надёжное решение...
Ответить с цитированием
  #4 (permalink)  
Старый 12.09.2016, 09:53
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Faab, почитай тогда Неточные вычисления
Ответить с цитированием
  #5 (permalink)  
Старый 12.09.2016, 10:01
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Спасибо, Rise.

Ну значит интуитивно я выбрал правильное решение. Теперь буду всегда отсекать - n.toFixed(12) . Век живи - век учись.
Ответить с цитированием
  #6 (permalink)  
Старый 13.09.2016, 04:48
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со слайдером. Shupamen Работа 1 15.12.2013 00:12
проблемы с PagingToolbar serg3091 ExtJS 4 26.06.2013 09:33
Решение проблемы с отображением элементов на странице mozyr Javascript под браузер 17 13.01.2012 02:34
Точность вычисления чисел с плавающей запятой Mihas2 Общие вопросы Javascript 2 19.01.2010 16:32
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37