Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.14;
Скачать: CL | DM;

Вниз

Округление в InterBase   Найти похожие ветки 

 
Igor_   (2002-02-14 11:53) [0]

Не могу нормально округлить числа с плавающей запятой.
В InterBase объявил переменные NUMERIC(15,2) –типа денежный формат. В InterBase Interactiv SQL они вроде бы выглядят так как надо, но когда считываешь их иэ Delphi или из SQL Explorer он показывает их с большим числом знаков после запятой (смотря сколько знаков идет перед запятой – всего 15 знаков). В результате накапливается ошибка и копейки не совпадают. В InterBase функций для округления не нашел. Пытался написать функцию в UDF которая бы округляла до нужного знака после запятой, но при ее выполнении возаращается почему-то не округленное значение, 0.


 
Alexandr ©   (2002-02-14 12:05) [1]

дык на
ib.demo.ru
возьми готовую UDF. И там будет тебе и округление, и еще много чего полезного


 
Johnmen ©   (2002-02-14 12:08) [2]

Округляй на уровне приложения и все будет Ок !
(Данные проблемы мною решены - если есть конкр.вопросы - задавай)


 
Igor_ ©   (2002-02-14 12:13) [3]

На уровне приложения не получается т.к. суммирование происходит в хранимой процедуре, На ib.demo.ru посмотрю. Спасибо за совет.


 
Fay ©   (2002-02-14 15:20) [4]

SQL Explorer работает через BDE, так что нечему удивляться - подобная "суперская" работа с дробными числами является тадиционным "достоинством" BDE.
А деньги лучше хранить в целых копейках.
А ещё лучше с в целых центах. :)
На всякий случай почитай в Data Definition Guide (так вроде)
о реалиях InterBese-всого NUMERIC-а - захватывающее чтиво.


 
Fay ©   (2002-02-14 15:24) [5]

Прошу прощения за "InterBese-всого".
Во вторых - с IB5.5 точно можно работать через InterBaseExpress


 
Fareader ©   (2002-02-14 15:36) [6]

Лучше использовать тип поля Double precision - тогда точность не теряется и можно округлять безболезнено


 
Johnmen ©   (2002-02-14 16:15) [7]

>Fay © : ...<SQL Explorer работает через BDE, так что нечему удивляться - подобная "суперская" работа с дробными числами является тадиционным "достоинством" BDE...>

BDE здесь совершенно непричем !
А все дело в том, что в IB значения полей типа c плавающей точкой хранятся реально с пл.точкой, т.е. в виде двоичного представления, и поэтому прописав в поле, напр., 23.0 реально в нем будет что-то 23.00000014 !
Посему деньги хранить в копейках, согласен, подход верный,
но в приложении это придется учитывать.



 
Igor_ ©   (2002-02-14 17:01) [8]

Что деньги лучше хранить в копейках до меня самого дошло, но было уже поздно - много переделывать. Спасибо всем за участие, особенно Alexandr, на ib.demo.ru я нашел подходящую UDF.


 
Fay ©   (2002-02-14 21:22) [9]

2Johnmen
NUMERIC(15,2) - не есть число с плавающей точкой.



Страницы: 1 вся ветка

Текущий архив: 2002.03.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-43007
ev
2002-02-22 21:49
2002.03.14
Почему глючит определение размера файла


1-43004
com
2002-02-28 16:26
2002.03.14
Как определить имя (login) текущего пользователя в Windows?


3-42966
tns
2002-02-15 09:40
2002.03.14
Сетевое приложение


14-43134
Praco
2002-01-25 10:19
2002.03.14
Как правильно говорить : Дельфи или Делфи?


3-42923
tovSuhov
2002-01-30 12:07
2002.03.14
ADOQuery...