Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизВопрос о точности данных! Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c