BCMath 任意精度数学関数
BC Math
&reftitle.intro;
任意の精度の演算をサポートするために、PHP は
2147483647 (または 0x7FFFFFFF) までの
任意のサイズおよび精度の小数桁をサポートする BCMath を提供します。
十分なメモリがあれば、文字列表現もサポートします。
有効(別名 well-formed) な BCMath数 は、以下の正規表現にマッチする文字列です。
/^[+-]?[0-9]*(\.[0-9]*)?$/.
string
であることが期待されている float 型の値を BCMath 関数に渡してしまうと、
PHP が float 型の値を string 型に変換するやり方の影響で、
あなたが望む結果にならない可能性があります。
なぜなら、 string が、ネイピア数を使った表記
(これは BCMath では未サポートです) である可能性があったり、
PHP 8.0.0 以前では
小数点の記号がロケール依存(BCMath は常に小数点(.)を期待しています)
であったりするためです。
'0'
$num2 = -0.000005; // (string) -0.000005 => '-5.05E-6'
echo bcadd($num1, $num2, 6); // => '0.000000'
setlocale(LC_NUMERIC, 'de_DE'); // 小数点がコンマになるロケール
$num2 = 1.2; // (string) 1.2 => '1,2'
echo bcsub($num1, $num2, 1); // => '0.0'
?>
]]>
&reference.bc.setup;
&reference.bc.constants;
&reference.bc.reference;