Страницы: 1
RSS
Ошибка в вычитании переменных Double
 
Добрый день.
Пример упрощенный, но суть та же...
Столкнулся с необъяснимым. Не могу понять почему не выполняется условие:
Код
Dim A, B, C as Double
A = 1.1
B = 0.9
C = 0.2
If A - B <= C then msgbox ("условие выполняется") Else msgbox ("условие НЕ выполняется")

По моим ожиданиям 1,1 - 0,9 = 0,2, что меньше (нет) или равно (да) 0,2. Стало быть условие выполняется... А нет!

Изменено: Textron - 23.01.2020 14:09:10
 
IEEE 754 - стандарт такой. Его ошибка.
 
Цитата
vikttur написал:
IEEE 754 - стандарт такой . Его ошибка.
А выход из этого есть?
 
См.здесь. Позволю себе не согласиться с юным другом уважаемым модератором - стандарт никаких ошибок не содержит и служит человечеству верой и правдой много лет. Другое дело, что школьные знания о приближенных вычислениях должны применяться на практике.
Владимир
 
Спасибо за подсказки)
 
Успехов!
Владимир
 
Обычно округляют, но можно и так:
Код
If CDec(A - B) <= CDec(C) Then MsgBox ("условие выполняется") Else MsgBox ("условие НЕ выполняется")

If --Trim(A - B) <= --Trim(C) Then MsgBox ("условие выполняется") Else MsgBox ("условие НЕ выполняется")

Изменено: Hugo - 23.01.2020 15:01:22
Страницы: 1
Наверх