Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP bcmod() 함수로 임의 정밀도 숫자의 나머지(모듈로) 구하는 방법

PHP에서 bcmod() 수학 함수는 임의 정밀도(arbitrary precision) 숫자의 모듈로(modulus), 즉 나머지를 계산하는 데 사용됩니다. 이 함수는 임의 정밀도 숫자를 문자열 형태로 받아, 지정된 정밀도에 맞춰 결과를 반환합니다. 쉽게 말해 string_num1string_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 이상 버전을 사용해야 합니다.