当我尝试获得余数时,它给出了无效的值.我试图得到两个小数的余数,我得到
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
但是Reality为0.1将在20倍中除以0.005.即0.1 / 0.005 = 20
当我使用10%1 = 0时,相同的函数返回正确的值.
我如何获得确切的余数. (我在JQuery中没有遇到相同的问题:))
检查解决方法:PHP Division Float Value WorkAround
解决方法:
%运算符仅适用于整数,因此它将浮点数截断为整数并尝试执行0%0,这将导致除以零.
唯一可以使用的是fmod().您在这里面临的问题是典型的浮点不精确度(该值“接近”零).我会考虑忽略小于10 ^ -15的值.在PHP中没有真正的替代方法.
您可以尝试做的是真正的划分,然后,一些不精确的运气消失了. (例如回合(0.1 / 0.005)=== 0.1 / 0.005)