引数 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. 精密計算 をご覧ください。