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

Вниз

Вопрос о точности данных!   Найти похожие ветки 

 
RavenD   (2004-02-16 10:47) [0]

Привет, All!

ситуация:
в БД (Paradox, InterBase) поля типа BCD c 6-ю знаками после запятой, в алиасе строка ENABLE BCD стоит в True

проблема:
к таблице обращаюсь через TTable
Table1.FieldByName("Rate").AsFloat
приходяжие значения округляются до 4 знаков после запятой -> точность теряется, подскажиет как настроить точность обрабатываемых данных

Спасибо.


 
Zacho ©   (2004-02-16 10:52) [1]

В IB нет типа данных BCD. Есть DECIMAL, NUMERIC, DOUBLE PRECISION. Какой именно тип у тебя ? И какая версия IB и диалект ?


 
Семен Сорокин ©   (2004-02-16 10:55) [2]

может можно поменять тип поля вручную:
Table1.FieldByName("Rate").SetFieldType(ftFloat);


 
KADAN ©   (2004-02-16 11:25) [3]

В BCD ограничения Digits 20, precision 4

imits the precision of the BCD values it can support to 4 decimal places and 20 significant digits


 
RavenD   (2004-02-16 14:16) [4]

>Zacho
NUMERIC(15,6)
FireBird
dialect 3

>KADAN
подскажите тогда способ как обрабатывать числа содержащие больше 4 знаков после запятой

Спасибо


 
KADAN ©   (2004-02-17 08:13) [5]

Можно сделать строковое поле длиной скажем 20 и записывать в него float"ы, но тогда придется программно следить за правильностью ввода. код
 table1.First;
 a:=table1.fieldbyname("Fl").AsFloat;
 s:=table1.fieldbyname("Fl").AsString;
 table1.Last;
 b:=table1.fieldbyname("Fl").AsFloat;
 s:=s+"+"+table1.fieldbyname("Fl").AsString+"=";
 s:=s+floattostrf(a+b,ffFixed,20,6);
 showmessage(s);

идет на ура.


 
RavenD   (2004-02-17 12:17) [6]

>KADAN
неужто Дельфя не позволяет работать с большим количеством символов после запятой без извращений?

народ неужто предлагаемые выше способы единственно возможные?

Спасибо.


 
Guest   (2004-02-17 12:34) [7]

Я использую TBCDField и TFMTBCDField, которые AsString возвращают данные без искажений.


 
Romkin ©   (2004-02-17 12:39) [8]

Ограничение на 4 знака - баг BDE. ТАм в currency преобразуют, унутрях. Используй компоненты прямого доступа. Кстати, при enabled BCD на первом диалекте еще и отсечение вместо округления было


 
RavenD   (2004-02-19 10:12) [9]

>Romkin
"компоненты прямого доступа" - подробней можно, о чём речь?


 
Anatoly Podgoretsky ©   (2004-02-19 10:18) [10]

RavenD   (16.02.04 10:47)  
В Парадоксе нет BCD с 6 знаками, только с четырьмя и ежто единственный BCD который там есть. Остальные это Float и маска для отображения. Подлинные BCD есть в xBase, но это все равно не относится к обработке в Дельфи и бругих Борландовских продуктах.
В Интребейс в 3 диалекте, что то появилось

RavenD   (17.02.04 12:17) [6]
Не позволяет, но какая то поддержка появилась в версии 6, какая точно не иследовал, у меня Д5 рабочая лошадка.


 
Anatoly Podgoretsky ©   (2004-02-19 10:19) [11]

Да и еще про BCD - в dBase 4 была подлинная поддержка, но после того как Борланд купил ее, он уничтожил эту поддержку и стал делать внутреннею обработку через Float


 
Zacho ©   (2004-02-19 10:26) [12]


> RavenD   (19.02.04 10:12) [9]

IBX - входит в поставку Дельфи начиная с Д5. FIBPlus, IBO - отдельные и платные. Есть и еще менее распространенные. В общем, выбирай по потребностям и по возможностям. А использовать сейчас для работы BDE с IB - не стоит.
И еще - тебе прямая дорога на http://www.ibase.ru :)



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

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

Наверх




Память: 0.49 MB
Время: 0.173 c
1-1078944458
TSa
2004-03-10 21:47
2004.03.28
Кнопка закрыти в MDI приложениях


6-1074427161
mihik
2004-01-18 14:59
2004.03.28
Поиск сервера в сети


3-1076957114
casper
2004-02-16 21:45
2004.03.28
Использую TADOQuery1.Запрос SELECT * FROM DB WHERE DB.DATA=01/06


4-1073901124
keymaster
2004-01-12 12:52
2004.03.28
hibernate программно


1-1078407725
Geraldino
2004-03-04 16:42
2004.03.28
Работа с ресурсными файлами