PHP バージョン 5.4.33 php.ini: bcmath.scale = 0 (bcmath.scale = PHP_INI_ALL も試しました)
問題:
php5433 -r "エコー bccomp(0.00000001, 0, 9);" 印刷 0
php5433 -r "エコー bccomp(1.00000001, 1, 9);" 印刷 1
なぜ?誰でも助けることができますか?
これは、bccomp
最初の 2 つの引数が文字列であることを意図しているためです。ここでわかるように、文字列の場合は期待どおりに機能します。どうしてこれなの?よくわかりませんが、おそらくecho 0.00000001;
1.0E-8(科学表記法)をecho 1.00000001;
出力し、1.00000001(例)を出力する理由に何か関係があります
bcmath.scale = 0
次のように指定されていない場合にのみ、デフォルトのスケール値を設定しますbcscale
スケール パラメーターを明示的に指定しない bc 数学関数への後続のすべての呼び出しに対して、既定のスケール パラメーターを設定します。