|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
1. Код: sql 1. 2.
Наблюдается дребезг в 14-м и далее разрядах, характерный для преобразований чисел с плавающей точкой. С чего бы? Специально выбрал формат с фиксированной точкой, чтобы не терять ни одного знака, и вот. Это пока не вопрос, так, недоумение. 2. А вот и вопрос. Хочу хранить в поле таблицы величины decimal(18,14) и получать их с клиента, но не могу сообразить, как бы эту передачу толком сделать. Передавать в виде floating point нельзя, будут искажения. Если передавать как bigint , то потом невозможно поделить на 100000000000000 , это число в выражении явно или неявно преобразуется к decimal(18,14) и возникает overflow . Да и есть сильные подозрения, что при делении не обойдется без floating point (см. п. 1), что опять приведет к потере разрядов. Единственное, что остается, передавать в виде строки '99.00000000000001' и потом делать cast к decimal(18,14) , но это ж как-то некошерно работать с числами через строки. А как? Ладно, хотя бы к decimal(18,13) , на 13 знаках хотя бы явления, описанного в п. 1, не наблюдается. Firebird 3.0.7 P.S. Да, и с праздником всех причастных! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 15:53 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 16:06 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Хм, и правда, dimitr. ISQL дает такой результат. А IBExpert - тот, который у меня выше. Значит, это IBExpert результат представляет неаккуратно. Ну, уже легче, спасибо. Но п. 2 остается с вопросом. Ага, точно Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 16:28 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
shalamyansky Если передавать как bigint , то потом невозможно поделить на 100000000000000 , это число в выражении явно или неявно преобразуется к decimal(18,14) и возникает overflow . Да и есть сильные подозрения, что при делении не обойдется без floating point (см. п. 1), что опять приведет к потере разрядов. А зачем делить на 100000000000000, если можно умножить на 0.000000000000001. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 18:55 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
shalamyanskyЗначит, это IBExpert результат представляет неаккуратно. Потому что Дельфи вообще и дельфийские компоненты доступа к данным не имеют типа с фиксированной точкой. Так что либо используй API напрямую, либо извращайся проктостоматологически. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 19:27 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
YuRock А зачем делить на 100000000000000, если можно умножить на 0.000000000000001. Мн-да... знал, что я лопух, но чтоб настолько... Работает, однако, спасибо! Dimitry Sibiryakov Потому что Дельфи вообще и дельфийские компоненты доступа к данным не имеют типа с фиксированной точкой. Так что либо используй API напрямую, либо извращайся проктостоматологически. Ну, в Дельфи есть currency = decimal(18,4) , но это очень куце, конечно. Поначалу его и использовал, и все работало, пока не выяснилось, что 4 знака - это очень мало для задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2021, 22:24 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
dimitr Код: sql 1. 2. 3. 4. 5.
FB3, D3. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Навеяло ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2021, 09:27 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Коваленко Дмитрий, а что тут удивило, если ты 19 знаков передал? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2021, 09:38 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Симонов Денис, Смонтировали на лесопилке в сердце Сибири импортную шведскую пилораму. - Ну-ко, Васька, тащи бревно. - Вжик. - Уууу, сцуко... - Мужики, тащите самое толстое. - Вжжик. - Уууу сцуко... Так, тащите колоду на которой дрова колем. - Вжжжииикк. - Уууу сцуко... Васька, сунь-ка в её лом. - Дзынь-блям-чик-чирик-звездык-куку. - Аааа, сцуко! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2021, 13:44 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Симонов Денис Коваленко Дмитрий, а что тут удивило, если ты 19 знаков передал? Сообщение об ошибке. Здесь проблема с переполнением, а оно мне про токен какой-то говорит. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 08:57 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Коваленко Дмитрий, чтобы была ошибка о переполнении парсер должен сначала получить число в одном из известных Firebird типов, а только потом делать преобразование, где и может вылезти эта ошибка Попробуй на Firebird 4.0 Код: sql 1. 2.
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Код: sql 1. 2.
а вот тут всё OK ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 09:42 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Симонов Денис Попробуй на Firebird 4.0 У меня его нет. А что он там скажет про Код: plsql 1.
? (полагаю тут нулей достаточно много) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 09:49 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Коваленко Дмитрий, Код: plaintext 1. 2. 3. 4. 5. 6.
а там такой литерал распознаётся как decfloat(34) которое при преобразовании в decimal и даёт ошибку Коваленко ДмитрийУ меня его нет. А пора бы уже иметь. Всё таки RC на дворе, а ты же провайдер пишешь. А под новые типы данных там пилить много надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 09:58 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
кстати, жабисты свой JDBC уже запилили под 4.0 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 11:38 |
|
Числа с фиксированной десятичной точкой и многими знаками после точки
|
|||
---|---|---|---|
#18+
Симонов ДенисВсё таки RC на дворе, а ты же провайдер пишешь. А под новые типы данных там пилить много надо. Не надо. MS SQL и, соответственно, OLE DB не имеют поддержки этих типов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2021, 14:40 |
|
|
start [/forum/topic.php?fid=40&fpage=8&tid=1560100]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 189ms |
0 / 0 |