Форум » Clipper » Сравнение с 0 » Ответить
Сравнение с 0
dar: Clipper 5.01 Старая прога. Недавно стали выскакивать в отчете записи с нулевыми значениями, хотя стоит проверка вывода тоько положительных значений. Типа if summa>0 печатаеи endif Интересно, что проверка summa>0 дает .T., а вывод str(summa,15,6) дает 0.000000. Что за глюк такой? Раньше такого поведения Clipper не замечал. Даже round(summa,2)>0 тоже дает .T. Чем поможете?
Ответов - 5
les: dar пишет: if summa>0 я давно пользуюсь if abs(summa) > 0.005 никаких проблем
gfilatov: dar пишет: Чем поможете? Попробуй if int(summa)>0 ... endif
Andrey_IV: Clipper достаточно точно производит сравнение, поэтому в таких случаях необходимо учитывать, что это за переменная. Например, если это сумма в рублях - значит у нее скорее всего 2 десятичных знака. Тогда сравнение необходимо производить так: IF ROUND(nSumma, 2) > 0 ........ ENDIF Потому что на самом деле после каких-либо арифметических действий сумма может быть = 0.00000015
les: Andrey_IV пишет: IF ROUND(nSumma, 2) > 0 к сожалению round иногда глючит, здесь это уже обсуждалось
petr: if !equal(nSumma,0) ... endif ... Function equal(x,y,eps) eps:=iif(eps=NIL, 0.0000..1 ,eps ) return (abs(x-y)<eps)
полная версия страницы