PHP部门浮动价值问题

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

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)

上一篇:SQl Server 中的decimal( m , n )的意思


下一篇:python-如何不使用全局上下文舍入十进制数?