- PR -

DB2でDOUBLE型をROUND

1
投稿者投稿内容
take
大ベテラン
会議室デビュー日: 2004/08/13
投稿数: 177
お住まい・勤務地: 沖縄県北部
投稿日時: 2006-02-21 10:38
お世話になります。db2 8.0です。
DB2のROUNDの結果がおかしい
上のスレッドで触れた内容なのですが、対応方法で迷っています。
処理的にはDOUBLE型同士の計算を四捨五入するのですが、DOUBLEを
そのままROUNDしても欲しい結果が得られないので、一度DECIMALで
必要な桁数に切ってROUNDする方法を取る方法があることをIBMさん
かどこかのサイトで知りました。

試してみたSQLの列出力部です。


dec(round(double(TBL1.TEST1) / double(TBL1.TEST2), 2),4,2) end as DECTEST


計算結果によってはオーバーフローしてしまいます。

dec(round(double(TBL1.TEST1) / double(TBL1.TEST2), 2),4,3) end as DECTEST

のように小数部を3桁にするとオーバーフローしないのですが、データによっては
オーバーフローの危険があるのかと思っています。

同じような状況で対応された方がいらっしゃいましたら
ご教示いただけると幸いです。
take
大ベテラン
会議室デビュー日: 2004/08/13
投稿数: 177
お住まい・勤務地: 沖縄県北部
投稿日時: 2006-02-21 14:54
自己レスです。

DOUBLEのところを全部DECIMALに変更してみると
うまくいってるっぽいです。
とりあえずこれで対応したいと思います。
他の方法をご存知の方がいらっしゃいましたら
引き続きお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)