MySQL 5.1 リファレンスマニュアル :: 22 精密計算 :: 22.4 丸め挙動
« 22.3 式の取り扱い

22.5 精密計算の例 »
Section Navigation      [Toggle]
  • 22 精密計算
  • 22.1 数値のタイプ
  • 22.2 DECIMAL データ タイプの変更
  • 22.3 式の取り扱い
  • 22.4 丸め挙動
  • 22.5 精密計算の例

22.4. 丸め挙動

このセクションでは、ROUND() 関数、そして正確値タイプ(DECIMALと整数)を利用したのカラムへの挿入の為の正確計算の丸めについて説明します。

ROUND() 関数は、引数が正確なものであるか、近似値であるかによって異なった丸めを実行します。

  • 正確な値の数に対して、ROUND() は 「round half up」 規則を使用します:.5以上の端数を持つ値は、次の整数がポジテブである場合、それに対して切り上げ、ネガティブである場合、それに対して切り下げます。(言い換えると、それはゼロから切り捨てられるという事です。).5以下の端数を持つ値は、次の整数がポジティブである場合、それに対して切り下げ、ネガティブである場合、それに対して切り上げます。

  • 近似値の数に対する結果は C ライブラリによって異なります。多くのシステム上では、これは、ROUND() は 「round to nearest even」 規則を使用する事を意味します:端数部分を持つ値は最も近い偶整数に丸められます。

以下の例は、正確な値の丸めと近似値の丸めの違いを示しています。

mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3          |            2 |
+------------+--------------+

DECIMAL または整数カラムへの挿入の場合、目標は正確なデータ タイプであるので、挿入すべき値が正確か近似であるかを問わず、丸めには 「round half up,」 が使われます。

mysql> CREATE TABLE t (d DECIMAL(10,0));
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO t VALUES(2.5),(2.5E0);
Query OK, 2 rows affected, 2 warnings (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 2

mysql> SELECT d FROM t;
+------+
| d    |
+------+
| 3    |
| 3    |
+------+
Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates