Форум » 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)



полная версия страницы