Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
7-1072716979
Номолос
2003-12-29 19:56
2004.03.28
Ещё разок про память в процессах


9-1062001143
Ландграф Павел
2003-08-27 20:19
2004.03.28
Посмотрите мою игрушку (2D скролл-аркада на DelphiX c исходникам)


1-1078999284
Курдль
2004-03-11 13:01
2004.03.28
Как правильно вывести метафайл на принтер?


1-1078848467
Leech
2004-03-09 19:07
2004.03.28
MDI. Несколько копий одной формы. Как обрабатывать события?


3-1077647053
Dimedrol
2004-02-24 21:24
2004.03.28
Foreign Keys и индексы




   Наверх