|
|
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
вот, блин, тема больная у меня... может в отпуск пора??? вобщем вопрос в следующем состоит: я так понимаю, что NUMERIC и DECIMAL в 3 диалекте хранятся как INT64, только как именно, левая и правая части отдельно что ли? если можно, то ткните меня в ссылку по этому вопросу, а то на ИБФоеникс.ком ведут все ссылки, а там этой статьи уже нету, если она там вообще была... вобщем мне не понятно почему там, типа, проблем с точностью нет... вот в 1 диалекте всё предельно ясно, NUMERIC хранится как DOUBLE..., поэтому и ошибки при вычислении вылазют, а в 3 диалекте если не вылазют, то почему??? ЗЫ если непонятно высказался, готов поправиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 16:27:06 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
я так понимаю, что NUMERIC и DECIMAL в 3 диалекте хранятся как INT64, только как именно, левая и правая части отдельно что ли? Я так понимаю, что храниться число * 10 в степени, равной количеству разрядов после запятой. Т.е. для numeric 8,4 вместо 12.345 будет храниться 12.345*10^4 = 123450. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 16:50:13 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
нумерик(18,Х) хранится как инт64 в диалекте 3. более маленькие - в других типах. это я по памяти, а так в доке есть спецпараграф на эту тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2004, 16:52:02 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
Лентяйя так понимаю, что NUMERIC и DECIMAL в 3 диалекте хранятся как INT64, только как именно, левая и правая части отдельно что ли? Я так понимаю, что храниться число * 10 в степени, равной количеству разрядов после запятой. Т.е. для numeric 8,4 вместо 12.345 будет храниться 12.345*10^4 = 123450. Удачи. Совершенно верно. Builder воспринимает этот тип как BCD - Binary Coded Decimal. И в клиентской софтине TBCDField->Value представлен как Currency для отображения в гриде и как TBCDField->AsBCD для хранения. Но если в режиме отладки посмотреть значения, то для NUMERIC(18, 2) увидишь 10025 вместо 100.25 В хелпе сказано что этот тип представлен структурой Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 08:41:45 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
авторвобщем мне не понятно почему там, типа, проблем с точностью нет... вот в 1 диалекте всё предельно ясно, NUMERIC хранится как DOUBLE..., поэтому и ошибки при вычислении вылазют Когда число хранится в виде числа с плавающей запятой (double), то к примеру если у нас есть переменные A и B, и мы ожидаем что после некоторых вычислений в них получилось число 17, на самом деле там может быть A=17.000000001, B=16.9999999999; поэтому нельзя сравнивать на равенство так: A=B, а надо так: if abs(a-b) < 0.001. С числами которые хранятся в виде числа с фиксированной запятой (decimal), такого не происходит, то есть 17 оно и будет 17. Но, например если есть переменная C типа numeric(18,2), и мы напишем C= 12789/ 12789000, то результат будет 0.00, а не 0.001. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 14:53:10 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
всем спасибо, только ещё один момент, если NUMERIC(8,2), то он тоже в INT64 хранится или только NUMERIC(18,х) хранится как INT64, по крайней мере так я понял из описания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 16:23:29 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
Там табличка есть. Как чего хранится, при каких разрядах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 17:15:01 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
А как лучше поступить, если необходимо хранить большие суммы денег - сотни млн + копейки? Ведь необходимо (20.2), а max (18.2). Замучился с double. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 20:04:01 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
А скажи мне, мил человек, сто миллионов, это сколько нулей? Почему ты считаешь, что 18.2 - мало?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 20:07:39 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
Я не прав :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 20:16:32 |
|
||
|
про Numeric и Decimal
|
|||
|---|---|---|---|
|
#18+
leonbnА как лучше поступить, если необходимо хранить большие суммы денег - сотни млн + копейки? Ведь необходимо (20.2), а max (18.2). Замучился с double. Храни в копейках. У нас все банковские программы оперируют копейками. Перевод в гривны - на этапе формирования выходных документов. И ни каких проблем. (БД - SyBase). Хотя иногда это бывает неприемлемо - как сейчас у меня на задаче которую пишу на FB 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2004, 02:12:06 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32596366&tid=1578281]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 218ms |
| total: | 495ms |

| 0 / 0 |
