我不确定我做错了什么,但是这个计算
bcscale(20);
echo bcmul(bcdiv('422218', '2388865'), '473');
Run Code Online (Sandbox Code Playgroud)
回应“83.59999999999999999670”但其他所有计算器都给我83.6。
有没有办法解决这个问题,还是 bcmath 中的一个缺陷?
你看到这个结果的原因是因为你首先执行了除法。
该部门为您提供:
422218/2388865
0.17674418604651162790697674418604651163
Run Code Online (Sandbox Code Playgroud)
但是您要求输入20位数字,因此变为0.1767441860465116279. 有鉴于此, bc 现在为您提供正确的结果:
0.1767441860465116279*473
83.5999999999999999967
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一个“解决方案”是先执行乘法(它只给你 9 位数字),然后除法:
bcscale(20);
echo bcdiv(bcmul('422218','473'),'2388865');
83.60000000000000000000
Run Code Online (Sandbox Code Playgroud)