Форум: "Базы";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
ВнизДанные типа FLOAT Найти похожие ветки
← →
galexis (2003-12-01 10:35) [0]Естьв базе данных поле типа FLOAT. Заношу туда данные, например 800.2 - а сохраняется 800,200012207031. Что это значит? Можно ли изменить формат ввода с . на , ?
Спасибо
← →
BlackKing (2003-12-01 10:37) [1]ne ispol"zuj FLOAT, ispol"zuj DOUBLE PRECISION
← →
Anatoly Podgoretsky (2003-12-01 10:39) [2]Это числа с плавающей запятой, их представить точно нельзя, представление будет до ближайшего числа, которое можно.
Формат ввода определяется региональными настройками.
← →
galexis (2003-12-01 10:43) [3]>BlackKing Да, действительно. DOUBLE PRECISION помогло. Спасибо
>Anatoly Podgoretsky Региональными настройками на сервере где FireBird или на пользовательской машине. Потому что ввожу 800.2 (иначе ошибка), а отображатся 800,2
← →
galexis (2003-12-01 10:59) [4]Проверил. И на сервере разделитель целой и дробной части "," и на пользовательской машине ",". Чего же делать? Получается, что если открыть запись на изменение, нужно все запятые на точки исправлять. Как то не хорошо.
← →
sniknik (2003-12-01 11:02) [5]galexis © (01.12.03 10:43) [3]
>BlackKing Да, действительно. DOUBLE PRECISION помогло. Спасибо
не помогло(вернее это помогло в данном случае) просто у DOUBLE PRECISION ближайшее возможное число немного другое. к примеру 800,20000000000012207031 (часть с "лишними" цифрами обрезает) вот и все.
но и DOUBLE возможны "экссесы".
> ввожу 800.2 (иначе ошибка), а отображатся 800,2
на ввод можно поставить любой разделитель (также как и на вывод), например 800@2 и 800#2.
galexis ©
> Проверил.
где? в дельфях?
← →
BlackKing (2003-12-01 11:07) [6]Ja postojanno ispol"zuju Double Precision i ni razu ne vozniklo problem, a po nachalu pitalsja ispol"zovat" Float, s nim nichego horoshego ne vishlo.
← →
Reindeer Moss Eater (2003-12-01 11:09) [7]Дабл прецижн это и есть плавающая запятая. Так же как и Single.
← →
galexis (2003-12-01 11:27) [8]> sniknik
проверял в региональных настройках систем.
Но дело в другом. Я же SQL запрос использую. А в нем запятая означает разделитель полей. Как это обойти?
← →
Reindeer Moss Eater (2003-12-01 11:28) [9]Через параметры обойти. И навсегда забыть при этом про запятые и точки.
← →
ZrenBy (2003-12-01 11:30) [10]800.2 или 800,2 или 800@2 = 8002E-1
← →
Anatoly Podgoretsky (2003-12-01 11:31) [11]Ты ни разу не расшифровал это "Заношу туда данные"
← →
Anatoly Podgoretsky (2003-12-01 11:36) [12]Даже для Extended это число 800,200000000000046, что означае, что данное число не возможно представить точно.
← →
galexis (2003-12-01 11:36) [13]>Anatoly Podgoretsky Заношу данные так:
INSERT INTO CONTROL (NUMPOST,SUMMASH) values ("+
NUMPOST1+","+
SUMMASH1+")";
NUMPOST1, SUMMASH1 - это переменные, одна Integer, другая Double.
← →
sniknik (2003-12-01 11:52) [14]> NUMPOST1, SUMMASH1 - это переменные, одна Integer, другая Double.
и прямо в текст вставляются? сомнительно
никакиж проблем, + если много заносится гораздо быстрее
INSERT INTO CONTROL (NUMPOST,SUMMASH) values (:p1, p2)
parameters[0].value:= NUMPOST1;
parameters[1].value:= SUMMASH1;
← →
galexis (2003-12-01 12:48) [15]>sniknik Что то я не разобрался с параметрами. Сначала запрос, потом заполнение параметров, потом open? Так?
← →
Vemer (2003-12-01 12:53) [16]Для правильного хранения значений, особенно денежных в IBase лучше использовать поля типа Numeric[10,2]. Вижу 2 перимущества: 1 - не возникает никаких дробных хвостов, 2 - при занесений более длинных дробей все само правильно округляется без надобности использования кривого Round или написания собственного округления.
← →
sniknik (2003-12-01 13:00) [17]galexis © (01.12.03 12:48) [15]
сначала, вне циклов(а) запрос, в цикле заполнение, после заполнения ExecSQL.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c