On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 34
Зарегистрирован: 06.03.06
ссылка на сообщение  Отправлено: 18.04.07 08:44. Заголовок: Сравнение с 0


Clipper 5.01 Старая прога. Недавно стали выскакивать в отчете записи с нулевыми значениями, хотя стоит проверка вывода тоько положительных значений. Типа
if summa>0
печатаеи
endif
Интересно, что проверка summa>0 дает .T., а вывод str(summa,15,6) дает 0.000000.
Что за глюк такой? Раньше такого поведения Clipper не замечал. Даже round(summa,2)>0 тоже дает .T.
Чем поможете?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]





Пост N: 31
Зарегистрирован: 29.07.05
ссылка на сообщение  Отправлено: 18.04.07 10:10. Заголовок: Re:


dar пишет:

 цитата:
if summa>0


я давно пользуюсь
if abs(summa) > 0.005
никаких проблем

Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 472
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 18.04.07 12:09. Заголовок: Re:


dar пишет:

 цитата:
Чем поможете?


Попробуй
if int(summa)>0
...
endif



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1
Зарегистрирован: 20.04.07
ссылка на сообщение  Отправлено: 20.04.07 00:14. Заголовок: Re:


Clipper достаточно точно производит сравнение, поэтому в таких случаях необходимо учитывать, что это за переменная.
Например, если это сумма в рублях - значит у нее скорее всего 2 десятичных знака.
Тогда сравнение необходимо производить так:

IF ROUND(nSumma, 2) > 0
........
ENDIF

Потому что на самом деле после каких-либо арифметических
действий сумма может быть = 0.00000015


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 32
Зарегистрирован: 29.07.05
ссылка на сообщение  Отправлено: 20.04.07 09:59. Заголовок: Re:


Andrey_IV пишет:

 цитата:
IF ROUND(nSumma, 2) > 0

к сожалению round иногда глючит, здесь это уже обсуждалось

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.04.07 14:06. Заголовок: Re:


if !equal(nSumma,0)
...
endif
...
Function equal(x,y,eps)
eps:=iif(eps=NIL, 0.0000..1 ,eps )
return (abs(x-y)<eps)



Спасибо: 0 
Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 6
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет