PHP에서 bcscale() 함수는 모든 bc 수학(bc math) 함수에 공통으로 적용되는 기본 스케일(scale, 소수점 자릿수) 값을 설정하는 데 사용됩니다. 이 함수를 한 번 호출해 두면, 이후 스케일 매개변수를 명시적으로 지정하지 않고 호출되는 모든 bc 수학 함수에 자동으로 해당 기본값이 적용됩니다. 또한 PHP 8.0부터는 인수 없이 호출하여 현재 설정된 스케일 값을 조회할 수도 있습니다.
문법
int bcscale($scale)
매개변수
bcscale() 함수는 단 하나의 매개변수만 받으며, 이 매개변수는 필수이며 정수(integer) 타입입니다. 이 값은 소수점 이하 몇째 자리까지 계산하고 표현할지를 결정하며, 기본값은 0입니다.
반환 값
bcscale() 함수는 변경 전의 이전(old) 스케일 값을 반환합니다. 참고로 PHP 8.0 미만 버전에서는 성공 시 true, 실패 시 false를 반환했지만, PHP 8.0부터는 이전 스케일 값을 정수형으로 반환합니다.
예제 1 – 기본 스케일 적용하기
<?php
// 기본 스케일을 5로 설정
bcscale(5);
// 기본 스케일 값 5가 적용됨
echo bcadd('107', '6.5596'), "\n";
// 세 번째 인수로 스케일을 직접 지정하면 기본값 대신 지정값이 사용됨
echo bcadd('107', '6.55957', 1), "\n";
// 스케일을 지정하지 않으면 기본 스케일 값 5가 적용됨
echo bcadd('107', '6.55957'), "\n";
?>
출력
113.55960 113.5 113.55957
bcadd()는 두 수를 더하는 bc 수학 함수입니다. 첫 번째 호출에서는 별도의 스케일을 지정하지 않았기 때문에 bcscale(5)로 설정한 기본값이 적용되어 소수점 다섯째 자리까지 0으로 채워진 113.55960이 출력됩니다. 반면 두 번째 호출처럼 세 번째 인수로 스케일을 직접 넘기면 기본값이 무시되고 지정한 자릿수만큼만 출력됩니다.
예제 2 – 실행 중에 기본 스케일 변경하기
<?php
// 기본 스케일을 5로 설정
bcscale(5);
// 기본 스케일 값 5가 적용됨
echo bcadd('107', '6.5596'), "\n";
// 스케일을 직접 지정한 경우에는 bcscale() 설정과 무관함
echo bcadd('107', '6.55957', 1), "\n";
// 기본 스케일 값을 3으로 변경
bcscale(3);
// 이후 호출부터는 새로운 기본 스케일 값 3이 적용됨
echo bcadd('107', '6.55957'), "\n";
?>
출력
113.55960 113.5 113.559
스크립트 실행 도중에도 bcscale()을 다시 호출하면 기본 스케일을 언제든지 바꿀 수 있습니다. 위 예제의 마지막 호출에서는 스케일이 3으로 변경된 상태이므로 결과가 소수점 셋째 자리까지만 표시됩니다.
현재 스케일 값 조회하기 (PHP 8.0 이상)
PHP 8.0부터는 bcscale()을 인수 없이 호출하면 현재 설정되어 있는 기본 스케일 값을 그대로 반환받을 수 있습니다.
<?php bcscale(4); echo bcscale(); // 4 출력 ?>
정리
bcscale()은 bcadd(), bcsub(), bcmul(), bcdiv() 같은 bc 수학 함수를 사용할 때마다 스케일을 일일이 지정하는 번거로움을 없애 주는 유용한 함수입니다. 코드 전체에서 일관된 소수점 정밀도가 필요하다면 스크립트 초반에 한 번만 설정해 두는 것이 좋습니다.