引数 X を D 小数点に丸めます。丸めアルゴリズムは 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. 精密計算 をご覧ください。