我们说我有
$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)才能正常工作
答案 0 :(得分:9)
使用字符串而不是浮点数作为BC函数的参数:
$foo = bcsub(bcdiv("1", "3", "20"), "0.00001", "20");
如果使用浮点数(即0.00001),PHP会将此数字转换为浮点数,这不是精确的。如果使用字符串(即“0.00001”),BC将转换为任意精度数,这是精确的。