PHP에서 bcmod() 수학 함수는 임의 정밀도(arbitrary precision) 숫자의 모듈로(modulus), 즉 나머지를 계산하는 데 사용됩니다. 이 함수는 임의 정밀도 숫자를 문자열 형태로 받아, 지정된 정밀도에 맞춰 결과를 반환합니다. 쉽게 말해 string_num1을 string_num2로 나눈 나머지를 구하는 것이며, string_num2가 0이 아닌 한 결과값은 항상 string_num1과 같은 부호를 가집니다.
문법(Syntax)
bcmod(string $num1, string $num2, [, int $scale=0])
또는 다음과 같이 표현할 수 있습니다.
bcmod(string $dividend, string $divisor[, int $scale=0])
참고: 위 문법은 $string_num1을 $string_num2로 나눈 나머지를 구합니다. string_num2가 0이 아닌 경우, 결과값은 string_num1과 동일한 부호를 갖습니다.
매개변수(Parameters)
bcmod() 함수는 두 개의 매개변수를 받습니다.
$dividend − 주어진 제수($modulus) 값으로 나누어질 피제수를 의미하며, 문자열(string) 타입의 매개변수입니다.
$modulus − 나누는 수인 제수(모듈러스)를 나타내며, 역시 문자열(string) 타입의 매개변수입니다.
반환값(Return Value)
bcmod() 함수는 피제수를 제수로 나눴을 때의 나머지를 반환합니다. 만약 제수가 0이라면 함수는 null을 반환합니다.
예제 1 — scale 매개변수 없이 bcmod() 사용하기
<?php
// 임의 정밀도 입력 숫자
$dividend = "25.666";
$modulus = "7";
// 모듈로 계산
$result = bcmod($dividend, $modulus);
echo "scale 값 없이 실행한 결과: ", $result;
?>
실행 결과
scale 값 없이 실행한 결과: 4
예제 2 — scale 매개변수를 사용한 bcmod() 함수
이번에는 동일한 입력값에 scale 값을 4로 지정하여 결과가 어떻게 달라지는지 확인해 보겠습니다.
<?php
// 임의 정밀도 입력 숫자
$dividend = "25.666";
$modulus = "7";
// scale 값 4 사용
$scaleVal = 4;
// 모듈로 계산
$result = bcmod($dividend, $modulus, $scaleVal);
echo "scale 값을 적용한 결과: ", $result;
?>
실행 결과
scale 값을 적용한 결과: 4.6660
예제 3 — bcscale()과 함께 사용하기
<?php
bcscale(1);
// PHP 7.2.0부터는 0.5 출력, 그 이전 버전에서는 0 출력
echo bcmod('5.7', '1.3');
?>
실행 결과
0.5
참고: scale 매개변수는 PHP 7.2.0 버전부터 추가되었습니다. 따라서 소수점 이하 자릿수를 다루려면 PHP 7.2.0 이상 버전을 사용해야 합니다.