- - PR -
DB2のROUNDの結果がおかしい
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2006-02-20 20:15
いつもお世話になります。DB2 8.0です。
単純なROUND関数を使用していますが、意図した結果が得られません。 試したTESTSQLは下記のとおりです。 SELECT ROUND(DOB_VAL,1) V1,ROUND(6.25,1) V2,ROUND(DOUBLE(6.25),1) V3, ROUND(DOUBLE(6.26),1) V4,ROUND(DOUBLE(6.25000000001),1) V5 FROM T_TAKE_TEST; 結果 V1 V2 V3 V4 V5 ----- ----- ----- ----- ----- 6.2 6.3 6.2 6.3 6.3 DOUBLE型の6.25を少数第1位を残すようにROUNDしています。 結果は6.3になると思っていました。ならないんですね。(V3です) というかDOUBLE型の特性なのかどうなのかを調べているのですが、 なかなか有力な情報にたどり着けません。 ご存知の方がいらっしゃいましたらご教示願います。 |
|
投稿日時: 2006-02-20 20:23
結果を見ると、偶数丸めのように見えますね。
もし、ROUND(DOUBLE(6.35), 1) を試して 6.4 になれば「偶数丸め」ですね。 でも、 DB2 UDB の ROUND関数は四捨五入か 四捨五入だとハッキリ言ってますね。(~_~;) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2006-02-20 20:49
じゃんぬねっとさんご返答ありがとうございます。
DOUBLEでやると精度は保障されませんみたいな こと言ってますね!decimalにしないとだめって・・・ コンピュータは2進数でデータを扱うから仕方がないとか・・・。 プロジェクト終盤でソースコード全部見直しかー(泣) 参考になりました。ありがとうございます。 |
1
