当我尝试获取余数时,它给出的值无效。我试图得到剩余的两个十进制值
3.4694469519536E-18号
我的价值观是

 $x=0.1; $y=0.005;

我尝试了以下方法:
echo $ed = fmod(0.1,0.005);  OutPut:3.4694469519536E-18
echo $ed = ((floatval(0.1)) % (floatval(0.005)));

但是得到
Warning: Division by zero

但现实是0.1将被0.005除以20倍。即0.1/0.005 = 20
当我使用10%1 = 0时,相同的函数返回正确的值。
我怎样才能得到确切的余数。(我在jquery中没有遇到相同的问题:))
查看解决方案:PHP Division Float Value WorkAround

最佳答案

%运算符只处理整数,因此它会将浮点截断为整数并尝试执行0 % 0,这会导致被零除。
你唯一能用的就是fmod()。这里您面临的问题是典型的浮点不精确性(值“接近”零)。我会考虑忽略小于10^-15的值。在php中没有真正的替代方法。
你可以试着做真正的除法,然后,带着一点运气,不精确的痕迹消失了。(就像round(0.1 / 0.005) === 0.1 / 0.005

07-24 09:44