2

Let's say I have

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

it returns me 0.33333333333333333333

If I have

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

it returns me 0.33323333333333333332

If I have

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

it returns me 0.33333333333333331483

If I have

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

it returns me 0.33323333333333331482

So why it can't properly subtract, it's something with floating point? But it works fine when just bcdiv(1, 3, 20)

4

1 回答 1

9

使用字符串而不是浮点数作为 BC 函数的参数:

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

如果使用浮点数(即 0.00001),PHP 会将这个数字转换为浮点数,这是不精确的。如果您使用字符串(即“0.00001”),BC 将转换为任意精度数,这是精确的。

于 2011-07-04T10:48:53.217 回答