BC Math 소개

임의 정밀도 수학의 경우 PHP는 메모리가 충분할 경우 문자열로 표시되는 최대 2147483647(또는 0x7FFFFFFF) 십진수의 모든 크기와 정밀도를 지원하는 BCMath를 제공합니다.

유효한(일명 올바른 형식의) BCMath 숫자는 정규식 /^[+-]?[0-9]*(\.[0-9]*)?$/와 일치하는 문자열입니다.

주의 문자열을 피연산자로 예상하는 BCMath 함수에 float 유형의 값을 전달하면 PHP가 float 값을 문자열로 변환하는 방식으로 인해 원하는 효과를 얻지 못할 수 있습니다. 즉, 문자열이 지수 표기법(BCMath에서는 지원되지 않음)일 수 있습니다. PHP 8.0.0 이전에는 소수점 구분 기호가 로케일에 따라 다릅니다(BCMath는 항상 소수점을 예상함).

                    
<?php
$num1 = 0; // (string) 0 => '0'
$num2 = -0.000005; // (string) -0.000005 => '-5.05E-6'
echo bcadd($num1, $num2, 6); // => '0.000000'

setlocale(LC_NUMERIC, 'de_DE'); // uses a decimal comma
$num2 = 1.2; // (string) 1.2 => '1,2'
echo bcsub($num1, $num2, 1); // => '0.0'
?>