[前][次][番号順一覧][スレッド一覧]

mysql:6667

From: "matsuda" <"matsuda" <matsuda@xxxxxxxxxx>>
Date: Thu, 5 Dec 2002 19:38:03 +0900
Subject: [mysql 06667] ROUND 関数の四捨五入について

こんにちわ
初めて参加させていただきます、まつだです。
いつも過去ログを見て参考にさせていただいています。

環境:Windows2000 SP1
MySQL:4.0.4-beta-max
ローカルでテストしています。

ROUND関数を使って、小数点第1位を四捨五入し整数に丸めたいのですが、
小数点第1位が"5"の時、四捨五入されていないようなのです。

<MySQL実行内容>
-------------------------------------------------
mysql> create table test(tanka decimal(15,3) null);
Query OK, 0 rows affected (0.09 sec)

mysql> insert into test values(890);
Query OK, 1 rows affected (0.01 sec)

mysql> select * from test;
+----------+
| tanka    |
+----------+
| 890.000  |
+----------+
1 row in set (0.00 sec)

mysql> update test set tanka=round(tanka*0.95,0);
Query OK, 1 rows affected (0.00 sec)
Row matched: 1  Changed: 1  Warnings:  0

mysql> select * from test;
+----------+
| tanka    |
+----------+
| 845.000  |
+----------+
1 row in set (0.00 sec)
-------------------------------------------------

上記SQL文より、(update test set tanka=round(tanka*0.95,0);)
890*0.95=845.5
となるので、小数点第1位を四捨五入したら
846
になるはずなのですが、結果は
845
となってしまいます。

このことから下記のようなROUND関数を使った値を直接INSERT文を使って
テーブルにデータを挿入してみましたが、以下のような結果になってしまい
ました。

・ROUND(845.49,0)  ---> 845 ×
・ROUND(845.5 ,0)  ---> 845 ×
・ROUND(845.50,0)  ---> 845 ×
・ROUND(845.51,0)  ---> 846 ○
・ROUND(845.59,0)  ---> 846 ○

フィールドの型に原因があるのかと思い、double型にしてみましたが
結果は同じでした。
また、小数点第1位が"5"以外のときは、期待通りの四捨五入の結果が
返ってきます。
さらに、小数点第1位以外でも試してみましたが、やはり結果は同じでした。

これはMySQLが内部的に行っている(のかな?)処理に原因があるので
しょうか?
もしくは、適さないフィールドの型とかがあるのでしょうか?


原因がわからず困ってしまい、MLに質問させていただきました。

以上、よろしくお願いいたします。

まつだ



[前][次][番号順一覧][スレッド一覧]

->    6667 2002-12-05 19:38 ["matsuda" <matsuda@x] ROUND 関数の四捨五入について            
      6668 2002-12-05 23:59 ┣[KAWAJI Shinya <kawaj]                                       
      6669 2002-12-06 00:08 ┃┗[KAWAJI Shinya <kawaj]                                     
      6671 2002-12-06 19:59 ┗[Takeyuki Miyagawa <m]                                       
      6675 2002-12-07 21:42  ┣[Masahiro Utsumi <uts]                                     
      6676 2002-12-09 00:43  ┗["kossy" <kossy@xxxxx]                                     
      6677 2002-12-09 13:23   ┗["matsuda" <matsuda@x]