Math round

(PHP 4, PHP 5, PHP 7, PHP 8)

round — Rounds a float


설명

round(int|float $num, int $precision = 0, int $mode = PHP_ROUND_HALF_UP): float

num의 반올림된 값을 지정된 precision(소수점 뒤의 자릿수)로 반환합니다. precision는 음수 또는 0일 수도 있습니다(기본값).


매개변수

num
The value to round.
precision
반올림할 선택적 소수 자릿수입니다.

precision가 양수이면 num은 소수점 이하 precision 유효 자릿수로 반올림됩니다.

precision가 음수이면 num은 소수점 앞의 precision 유효 자릿수로 반올림됩니다. 즉, pow(10, -precision)의 가장 가까운 배수로 반올림됩니다. precision가 -1인 경우 num은 십으로 반올림되고, precision가 -2에서 수백인 경우 등입니다.

mode
다음 상수 중 하나를 사용하여 반올림이 발생하는 모드를 지정합니다.
상수 설명
PHP_ROUND_HALF_UP Rounds num away from zero when it is half way there, making 1.5 into 2 and -1.5 into -2.
PHP_ROUND_HALF_DOWN Rounds num towards zero when it is half way there, making 1.5 into 1 and -1.5 into -1.
PHP_ROUND_HALF_EVEN Rounds num towards the nearest even value when it is half way there, making both 1.5 and 2.5 into 2.
PHP_ROUND_HALF_ODD Rounds num towards the nearest odd value when it is half way there, making 1.5 into 1 and 2.5 into 3.

반환 값

부동 소수점으로 지정된 precision로 반올림된 값입니다.


변경 로그

버전 설명
8.0.0 num은 더 이상 숫자 변환을 지원하는 내부 객체를 허용하지 않습니다.

Examples

예제 #1 round() 예제

                  
<?php
var_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 How precision affects a 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

                  
<?php
echo '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 with precision examples

                  
<?php
echo '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)
                

기타