Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-1073342616
Barlokf
2004-01-06 01:43
2004.03.28
Проверка реестра


6-1073904178
Alibaba
2004-01-12 13:42
2004.03.28
Получить email


11-1056812998
Dimaxx
2003-06-28 19:09
2004.03.28
Про ZLIB


7-1072748121
Equilebriya
2003-12-30 04:35
2004.03.28
Com порт


14-1078216065
Kerk
2004-03-02 11:27
2004.03.28
Бойкот выборов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский