PHP部门浮动值问题

时间:2014-09-25 12:20:24

标签: php math decimal

当我尝试获得余数时,它会给出无效值。我试图得到两个小数值,我得到了

  

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将在 20 次除以0.005。即0.1/0.005 = 20

当我使用10%1 = 0时,相同的函数返回正确的值。

我怎样才能得到确切的余数。 (我不会在JQuery中遇到同样的问题:))

检查解决方法:PHP Division Float Value WorkAround

1 个答案:

答案 0 :(得分:3)

%运算符只适用于整数,因此它会将浮点数截断为整数并尝试执行0 % 0,这会导致除以零。

您唯一可以使用的是fmod()。您在这里遇到的问题是典型的浮点不精确(值为"接近"零)。我考虑忽略小于10 ^ -15的值。在PHP中没有真正的替代方案。

你可以尝试做的是真正的分裂,然后,有点运气的不精确的痕迹消失。 (如round(0.1 / 0.005) === 0.1 / 0.005