доброго времени суток всем.
наверное, я совсем заработался, не могу сейчас сообразить.
прошу помочь разобраться.
суть проблемы: известно, что вычисления с вещественными числами выполняются не абсолютно точно из-за особенностей машинной арифметики.
поэтому, к примеру, результат, на самом деле равный 5-ти, может быть представлен как 5.00000000000000, 5.00000000000001 или 4.99999999999998 - в зависимости от того, как он был получен.
мне нужно производить сравнения таких чисел, но корректно, т.е. с учетом этих самых особенностей.
на равенство проверяю так:
а как проверить на больше-меньше?
я додумался до такого:
но сомневаюсь.
а с нестрогими условиями (>= и <=) совсем запутался
хелпми.
наверное, я совсем заработался, не могу сейчас сообразить.
прошу помочь разобраться.
суть проблемы: известно, что вычисления с вещественными числами выполняются не абсолютно точно из-за особенностей машинной арифметики.
поэтому, к примеру, результат, на самом деле равный 5-ти, может быть представлен как 5.00000000000000, 5.00000000000001 или 4.99999999999998 - в зависимости от того, как он был получен.
мне нужно производить сравнения таких чисел, но корректно, т.е. с учетом этих самых особенностей.
на равенство проверяю так:
| Код |
|---|
const eps=0.0000001 if abs(a-b) < eps then ' равны |
а как проверить на больше-меньше?
я додумался до такого:
| Код |
|---|
const eps=0.0000001 if a-b > -eps then ' a больше b if a-b < eps then ' a меньше b |
но сомневаюсь.
а с нестрогими условиями (>= и <=) совсем запутался
хелпми.
фрилансер Excel, VBA - контакты в
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг