为什么减法不能使用bcmath正常工作?

时间:2011-07-04 10:43:44

标签: php math bcmath

我们说我有

$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)才能正常工作

1 个答案:

答案 0 :(得分:9)

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

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

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