Проблемами с дробными числами в Jscript'е

Периодически, разрабатывая конфигурации, сталкиваемся с проблемами дробного числа в Jscript'е. Пример проблемы, на скриншоте:

Единым решением, пока, остается округление всюду, где только не уверены в правильности вычислений.
Какие будут соображения? Кто и как обходит данную проблему?

Нравится

Поделиться

11 комментариев

Так эти числа потом либо в датафилд ложаться, либо в отчете отображаются. И там и там они округлятся. Проблема только при отображении в сообщениях, там округление и используем.

В данном примере, система проверяет достаточно ли в данной партии продукта для отгрузки. Нужно: 0,6 единиц.
Доступно: 1,7 - 1,1 = 0,5999999999999999999

Выводит сообщение, что НЕ достаточно товаров на складе для отгрузки :confused:

--
www.it-sfera.com.ua

Ну на сколько я помню в численных методах с учетом возможной погрешности применяется метод сравнения

0.6 - (1.7 - 1,1) > eps

где еps достаточно малая ненулеавя величина. Берем eps = 1e-10. Пишем функцию сравнения

function IsGreat(a, b){
    return ((a - b) > eps)
}

ну и остальные функции сравнения чисел.

Когда начинал писать, идея казалась бредом, а сейчас даже нравится начинается :)

Я бы еще (a-b) по модулю взял, иначе работать не будет.

Идея интересная :biggrin:
Попробуем!

--
www.it-sfera.com.ua

"Попов Александр" написал:Я бы еще (a-b) по модулю взял, иначе работать не будет.

На самом деле для IsGreat работать будет - попробуйте на приведенном примере :) А вот для IsEqual и IsGreatOrEqual действительно нужен модуль.

Спасибо за уточнение! Но, цитата не моя :wink:

--
www.it-sfera.com.ua

Вы еще скажите что и мопед не Ваш :)
Сорри, Акелла промахнулся :)

С кем не бывает?!

--
www.it-sfera.com.ua

"Виталий Ковалишин aka samael" написал:С кем не бывает?!

Этот вопрос мне адресован? :)

Я же не со зла! :)

--
www.it-sfera.com.ua

Показать все комментарии