はじめに

任意の精度の演算をサポートするために、PHP は 2147483647 (または 0x7FFFFFFF) までの 任意のサイズおよび精度の小数桁をサポートする BCMath を提供します。 十分なメモリがあれば、文字列表現もサポートします。

有効(別名 well-formed) な BCMath数 は、以下の正規表現にマッチする文字列です。 /^[+-]?[0-9]*(\.[0-9]*)?$/.

警告

string であることが期待されている float 型の値を BCMath 関数に渡してしまうと、 PHP が float 型の値を string 型に変換するやり方の影響で、 あなたが望む結果にならない可能性があります。 なぜなら、 string が、ネイピア数を使った表記 (これは BCMath では未サポートです) である可能性があったり、 PHP 8.0.0 以前では 小数点の記号がロケール依存(BCMath は常に小数点(.)を期待しています) であったりするためです。

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

setlocale(LC_NUMERIC'de_DE'); // 小数点がコンマになるロケール
$num2 1.2// (string) 1.2 => '1,2'
echo bcsub($num1$num21); // => '0.0'
?>
関連キーワード:  BCMath, サポート, string, Math, 任意, 精度, 小数点, float, 期待, 警告