Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Не понимаю, что происходит с числами типа Decimal при их делении и умножении в DB2. К примеру, если взять функцию CREATE FUNCTION MY_FUNC_FOR_TEST (PARAM1 DECIMAL(19,4), PARAM2 DECIMAL(19,4)) RETURNS DECIMAL(19,4) BEGIN RETURN PARAM1*PARAM2; END и вызвать ее с произвольными дробными числами, то результат будет ужасающе далек от реального. А вот если выполнять не просто умножение, а указывать точность для каждого параметра, причем со scale=8: RETURN DEC(DEC(PARAM1,19,8)*DEC(PARAM2,19,8),19,4); то все получается просто отлично. Почему на ДБ2 оно работает именно так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 10:53 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Версия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 11:24 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
db2 10 for z/os ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 11:25 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Искажение в положении десятичной точки в результате? Т.е. вместо 123,45 например что-то типа 12,345 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 13:31 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. v1=19.4122 v2=22.5123 r=427.0684 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 13:58 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
а должно быть 437,0133 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 13:59 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Используйте DECFLOAT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 14:39 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Да, большое спасибо! Умные люди уже даже скинули ссылку на статью, где говорится, что в ДБ2 можно использовать этот тип для финансовых вычислений :) http://www.ibm.com/developerworks/data/library/techarticle/dm-0801chainani/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 14:48 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
вообще странно, а почему обычный децимал не работает правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 00:23 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
v1=19.4122 v2=22.5123 r=427.0684 - это результат умножения 19.4122 на 22, т.е. похоже от множителя только целая часть берется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 08:23 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
Так вот непонятно, почему оно так работает! Может быть, что-то не то с настройками самого сервера? Сейчас специалисты будут переписываться с IBM'овцами, выяснять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 10:48 |
|
||
|
Проблема с делением/умножением типов Decimal в DB2
|
|||
|---|---|---|---|
|
#18+
K.T.V., Исполнение умножения в таком виде должно давать SQLWARN7 (Conversion of decimal number from precision 31 to precision 15 caused truncation of fractional digits.) Почему так происходит описано в документации: Decimal multiplication Т.е. умножение работает "AS DESIGNED" но неочевидным образом. Варианты решения: 1. Уменьшить заданную разрядность одного из операндов с 19,4 до 15,4 2. Применить функцию MULTIPLY_ALT. Внимательно смотреть как работает. 3. Использовать DECFLOAT, о чем уже сказано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 12:52 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=37349550&tid=1602191]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 161ms |

| 0 / 0 |
