База знаний

Шаг 1 – попробуйте найти ответ:

База знаний: > Визуальный редактор
В реадкторе или АПИ неверные результаты Сравнения. Больше/Меньше работают неверно.
Автор Alexander Ladonin, Изменено Alexey TSLab на 24 July 2016 19:10

 В программе версии 1.2 для экономии памяти свечи используют именно одинарную точность для хранения.
В версии программы 2.0 двойная точность.

Проблема не программы, а использованной машинной арифметики.(в машинном представлении чисел для хранения.)
Двойная точность проблему решает не полностью, просто накладок в машинной арифметике меньше.

При печати с округлением 5 знаков 32.2500001 и 32.249999 будут напечатаны как 32.25, при сравнении в логической формуле они будут не равны,
а у 32.250000 нет машинного представления.
поэтому сравнение во всех учебниках делается так:
Math.Abs(X - Y) < Epsilon, где Epsilon требуемая точность, например 1e-5

Рекомендуется использовать Math.Round в редакторе или в АПИ для сравнения данных от инструментов с шагом менее единицы.

http://habrahabr.ru/post/112953/

 

(2 голос(а))
Эта статья полезна
Эта статья бесполезна