![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что есть тип NUMERIC? [D6, FB1.5]
S@shka © (2004-06-09 13:17:00)Ссылаясь на "Мир Interbase" изд 2.
Стр 21.
Numeric - разрядность от 1 до 18 и точность от 0 до разрялности.
(Разрядность - это общее цисло цифр в числе - точность - число знаков после запятой).
Кроме того дана таблица: Хранение числе с фикс. точностью
Разрядность Диалект 3
1-4 SMALLINT
5-9 Integer
10-18 INT64
------------------------------------------------------------
NUMERIC (10,2) - я так понимаю - это число у которого всего 10 цифр из которых до 2 после запятой.
Но почему тогда я в это поле могу внести значение
1 123 123 123, 11 - и оно корректно запишется???
NUMERIC (9,8)
позволяет хранить
11,111
но
111,111 - уже ошибка.
---------------------------------------------------------------
ОБъясните плиз, что да как с форматами данных с фиксированной точкой.
Alexandr (2004-06-10 07:01:00) [1]Fay © (09.06.04 16:48) [11]
2Alexandr © (09.06.04 13:32) [1]
Int64 = numeric(18, 0)
да, в некоторых случаях другое обозначение сути вопроса не меняет.
Anatoly Podgoretsky (2004-06-09 16:58:00) [2]Johnmen © (09.06.04 16:07) [9]
В других DECIMAL является BCD, а NUMERIC нет, иногда это одинаково.
Fay (2004-06-09 16:48:00) [3]2Alexandr © (09.06.04 13:32) [1]
Int64 = numeric(18, 0)
Alexandr (2004-06-09 16:17:00) [4]... с кучей специфичных особенностей в зависимости от версии, диалекта, фазы луны и прочего
Johnmen (2004-06-09 16:07:00) [5]Вообще говоря, NUMERIC и DECIMAL это псвдотипы. Которым соответствуют реальные FLOAT, DOUBLE PRECISION,SMALLINT,INT,BIGINT в зависимости от версии сервера и диалекта.
S@shka (2004-06-09 15:42:00) [6]Немножноко не корректно конечно....
Вот как правильно....
смотрится влазит ли число полностью с домножением на
10^точность типа
в указанный "подтип".
Для случая NUMERIC (9,8) подтип=INTEGER 2 147 xxx xxx
тогда иммеем 11,ххх => 11 * 10^8 = 1 1xx xxx xxx
и 111,xxx =>111 * 10^8 = 11 1xx xxx xxx - ПЕРЕБОР!!
Еще раз всем спасибо.
В книжке все таки криво рассморен вопрос с типами данных!!!!
S@shka (2004-06-09 15:24:00) [7]> Johnmen
большое спасибо - тоесть на самом деле просто на тип и надо ориентироваться.
Johnmen (2004-06-09 14:50:00) [8]>S@shka © (09.06.04 13:17)
Разрядность Диалект 3
1-4 SMALLINT
5-9 Integer
10-18 INT64
>NUMERIC (10,2) - я так понимаю - это число у которого всего 10
>цифр из которых до 2 после запятой.
Это INT64 (он же BIGINT).
>Но почему тогда я в это поле могу внести значение
>1 123 123 123, 11 - и оно корректно запишется???
Потому, что 112312312311 вполне влазит туда.
>NUMERIC (9,8)
>позволяет хранить
>11,111
>но
>111,111 - уже ошибка.
Потому, что 111111 не влазит в SMALLINT.
bushmen (2004-06-09 14:47:00) [9]Сам же говорил: "NUMERIC (10,2) - я так понимаю - это число у которого всего 10 цифр из которых до 2 после запятой."
S@shka (2004-06-09 14:35:00) [10]А как должно быть????
Я поэтому и вопрос задаю.
bushmen (2004-06-09 14:22:00) [11]Не знаю как в FB, а в MSSQL все так , как и должно быть! :)
S@shka (2004-06-09 13:35:00) [12]Сомнительный ответ :)
Но все равно спасибо.
Alexandr (2004-06-09 13:32:00) [13]а может ну их нафиг, а?
использовать только Integer (int64) и double precision
с которыми все более чем прозрачно.