2

私が持っているとしましょう

$foo = bcsub(bcdiv(1, 3, 20), 0.00001, 20);

0.33333333333333333333を返します

私が持っている場合

$foo = bcsub(bcdiv(1, 3, 20), 0.0001, 20);

0.33323333333333333332を返します

私が持っている場合

$foo = bcsub(0.333333333333333333, 0.00001, 20);

0.33333333333333331483を返します

私が持っている場合

$foo = bcsub(0.333333333333333333, 0.0001, 20);

0.33323333333333331482を返します

では、なぜ正しく減算できないのでしょうか。浮動小数点を使用したものなのでしょうか。ただし、bcdiv(​​1、3、20)だけの場合は正常に機能します

4

1 に答える 1

9

BC関数のパラメーターとして、floatの代わりに文字列を使用します。

$foo = bcsub(bcdiv("1", "3", "20"), "0.00001", "20");

float(つまり、0.00001)を使用する場合、PHPはこの数値をfloatに変換しますが、これは正確ではありません。文字列(つまり「0.00001」)を使用する場合、BCは任意の精度の数値に変換します。これは正確です。

于 2011-07-04T10:48:53.217 に答える