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

Tem*_*lar 2 php math bcmath

让我说我有

$foo = bcsub(bcdiv(1, 3, 20), 0.00001, 20);
Run Code Online (Sandbox Code Playgroud)

它返回我0.33333333333333333333

如果我有

$foo = bcsub(bcdiv(1, 3, 20), 0.0001, 20);
Run Code Online (Sandbox Code Playgroud)

它返回我0.33323333333333333332

如果我有

$foo = bcsub(0.333333333333333333, 0.00001, 20);
Run Code Online (Sandbox Code Playgroud)

它返回我0.33333333333333331483

如果我有

$foo = bcsub(0.333333333333333333, 0.0001, 20);
Run Code Online (Sandbox Code Playgroud)

它返回我0.33323333333333331482

那么为什么它不能正确地减去,它是浮点数的东西?但只有bcdiv(​​1,3,20)它才能正常工作

Sjo*_*erd 9

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

$foo = bcsub(bcdiv("1", "3", "20"), "0.00001", "20");
Run Code Online (Sandbox Code Playgroud)

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