デフォルト設定を使用して stringにキャストすると ( stringsが必要なため、float0.00001
をフィードした場合にこれが発生します)、次のようになります。bcmul
var_dump( (string)0.00001 );
string(6) "1.0E-5"
明確に文書化されていませんが、 bcmath は明らかに機能します戻る無効な入力に直面したときにゼロにキャスト:
var_dump( bcadd('Hello', 'world!', 8) );
var_dump( bcadd('33', 'Foo', 8) );
var_dump( bcdiv('33', 'Foo', 8) );
string(10) "0.00000000"
string(11) "33.00000000"
Warning: bcdiv(): Division by zero
NULL
任意精度ライブラリの全体的なアイデアは、基数 2 の算術および固定サイズのストレージの制限を克服することです。したがって、これが必要になります:
var_dump( bcmul('447274.44882', '0.00001', 8) );
string(10) "4.47274448"
これは、100 桁の数値を計算するには最適ですが、単純な丸めには特に役立ちません。実際、この拡張機能はまったく丸めず、切り捨てるだけです。
var_dump( bcmul('20.01', '1.444', 3) );
var_dump( bcmul('20.01', '1.444', 2) );
var_dump( bcmul('20.01', '1.444', 1) );
var_dump( bcmul('20.01', '1.444', 0) );
string(6) "28.894"
string(5) "28.89"
string(4) "28.8"
string(2) "28"