round
(PHP 4, PHP 5, PHP 7)
round — 浮動小数点数を丸める
説明
round
( float $val
[, int $precision
= 0
[, int $mode
= PHP_ROUND_HALF_UP
]] ) : float
val
を、指定した
precision
(小数点以下の桁数)に丸めた値を
返します。precision
を負またはゼロ(デフォルト)
とすることも可能です。
パラメータ
val
丸める値。
precision
オプションで指定する、丸める桁数。
precision
が正の値の場合、val
は 小数点以下、有効桁数precision
桁に丸められます。precision
が負の場合、val
の 丸め処理は小数点より前のprecision
桁に対して行われます。 つまり、一番近いpow(10, -precision)
の倍数に丸められます。 たとえば、precision
が -1 の場合、val
は 一番近い10の倍数に、precision
が -2 の場合は 一番近い100の倍数に丸められる、という具合です。mode
次の定数のいずれかを使って、丸めのモードを指定します。
定数 説明 PHP_ROUND_HALF_UP
端数が5(半分)の場合、 val
をゼロから離れる方向に丸めます。 1.5 は 2 に、そして -1.5 は -2 になります。PHP_ROUND_HALF_DOWN
端数が5(半分)の場合、 val
をゼロに近づく方向に丸めます。 1.5 は 1 に、そして -1.5 は -1 になります。PHP_ROUND_HALF_EVEN
端数が5(半分)の場合、 val
をもっとも近い偶数に丸めます。 1.5 や 2.5 は 2 になります。PHP_ROUND_HALF_ODD
端数が5(半分)の場合、 val
をもっとも近い奇数に丸めます。 1.5 は 1 に、そして 2.5 は 3 になります。
返り値
precision
で与えられた精度に丸められた値を float で返します。
例
例1 round() の例
<?phpvar_dump(round(3.4));var_dump(round(3.5));var_dump(round(3.6));var_dump(round(3.6, 0));var_dump(round(5.045, 2));var_dump(round(5.055, 2));var_dump(round(345, -2));var_dump(round(345, -3));var_dump(round(678, -2));var_dump(round(678, -3));?>
上の例の出力は以下となります。
float(3) float(4) float(4) float(4) float(5.05) float(5.06) float(300) float(0) float(700) float(1000)
例2 precision
が、どうfloatの値に影響するか
<?php$number = 135.79;var_dump(round($number, 3));var_dump(round($number, 2));var_dump(round($number, 1));var_dump(round($number, 0));var_dump(round($number, -1));var_dump(round($number, -2));var_dump(round($number, -3));?>
上の例の出力は以下となります。
float(135.79) float(135.79) float(135.8) float(136) float(140) float(100) float(0)
例3 mode
の例
<?phpecho 'Rounding modes with 9.5' . PHP_EOL;var_dump(round(9.5, 0, PHP_ROUND_HALF_UP));var_dump(round(9.5, 0, PHP_ROUND_HALF_DOWN));var_dump(round(9.5, 0, PHP_ROUND_HALF_EVEN));var_dump(round(9.5, 0, PHP_ROUND_HALF_ODD));echo PHP_EOL;echo 'Rounding modes with 8.5' . PHP_EOL;var_dump(round(8.5, 0, PHP_ROUND_HALF_UP));var_dump(round(8.5, 0, PHP_ROUND_HALF_DOWN));var_dump(round(8.5, 0, PHP_ROUND_HALF_EVEN));var_dump(round(8.5, 0, PHP_ROUND_HALF_ODD));?>
上の例の出力は以下となります。
Rounding modes with 9.5 float(10) float(9) float(10) float(9) Rounding modes with 8.5 float(9) float(8) float(8) float(9)
例4 桁数を指定した mode
の例
<?phpecho 'Using PHP_ROUND_HALF_UP with 1 decimal digit precision' . PHP_EOL;var_dump(round( 1.55, 1, PHP_ROUND_HALF_UP));var_dump(round(-1.55, 1, PHP_ROUND_HALF_UP));echo PHP_EOL;echo 'Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision' . PHP_EOL;var_dump(round( 1.55, 1, PHP_ROUND_HALF_DOWN));var_dump(round(-1.55, 1, PHP_ROUND_HALF_DOWN));echo PHP_EOL;echo 'Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision' . PHP_EOL;var_dump(round( 1.55, 1, PHP_ROUND_HALF_EVEN));var_dump(round(-1.55, 1, PHP_ROUND_HALF_EVEN));echo PHP_EOL;echo 'Using PHP_ROUND_HALF_ODD with 1 decimal digit precision' . PHP_EOL;var_dump(round( 1.55, 1, PHP_ROUND_HALF_ODD));var_dump(round(-1.55, 1, PHP_ROUND_HALF_ODD));?>
上の例の出力は以下となります。
Using PHP_ROUND_HALF_UP with 1 decimal digit precision float(1.6) float(-1.6) Using PHP_ROUND_HALF_DOWN with 1 decimal digit precision float(1.5) float(-1.5) Using PHP_ROUND_HALF_EVEN with 1 decimal digit precision float(1.6) float(-1.6) Using PHP_ROUND_HALF_ODD with 1 decimal digit precision float(1.5) float(-1.5)