ROUND(X)

ROUND(X), ROUND(X,D)

引数 XD 小数点に丸めます。丸めアルゴリズムは X のデータタイプに基づきます。D は特別に指定されない限り、デフォルトにより 0 になります。D は時に負数で、値 X の小数点左側の D 桁がゼロになる原因になる場合があります。

mysql> SELECT ROUND(-1.23);
        -> -1
mysql> SELECT ROUND(-1.58);
        -> -2
mysql> SELECT ROUND(1.58);
        -> 2
mysql> SELECT ROUND(1.298, 1);
        -> 1.3
mysql> SELECT ROUND(1.298, 0);
        -> 1
mysql> SELECT ROUND(23.298, -1);
        -> 20

出力型は最初の引数 ( 整数、重複、または 10 進数と想定 ) と同じタイプです。つまり、整数引数では、結果は整数 ( 小数点なし ) になるということになります。

ROUND() は、最初の引数が 10 進値である時、高精度値引数に対して精度算数ライブラリを使用します :

  • 高精度値数に対して、ROUND() は 「四捨五入」 ルールを行使します : .5 以上の小数部を持つ値は、正数である場合は次の整数に切り上げられ、負数である場合は切り下げられます。( つまりゼロから切り遠ざけられる ) 。0.5 未満の小数部を持つ値は、正数である場合は次の整数に切り下げられ、負数である場合は切り上げられます。

  • 近似数値では、結果は C ライブラリによります。多くのシステムはで、これはつまり ROUND() は " 最も近い偶数に丸める " ルールを使用しているということになります : なんらかの小数部を持つ値は最も近い偶数の整数に丸められます。

次の例は高精度値と近似値で、丸め方がどう異なるかを示しています :

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

詳細は 章 22. 精密計算 をご覧ください。