PHP浮点数取余运算未获预期结果求助
PHP计算浮点数余数的问题解决
你尝试用%运算符和bcmod()函数计算0.7除以5.1的余数,得到的结果都是0,但预期结果是0.7,问题出在这两个方法的特性上:
%是整数取余运算符,会自动将操作数转为整数:0.7转成0,5.1转成5,0%5的结果自然是0。bcmod()函数默认仅支持整数运算,传入的小数会被截断为整数,同样会把'0.7'处理成0,'5.1'处理成5,结果还是0。
正确解决方法
方法1:使用fmod()函数
PHP提供了fmod()函数专门处理浮点数取余,直接传入浮点数就能得到正确结果:
echo fmod(0.7, 5.1); // 输出0.7
方法2:手动转换为整数计算
将小数放大为整数后取余,再还原为小数:
// 放大10倍转为整数(根据小数位数调整倍数) $num1 = 0.7 * 10; $num2 = 5.1 * 10; $result = ($num1 % $num2) / 10; echo $result; // 输出0.7
内容的提问来源于stack exchange,提问作者ASIF IQBAL
相关产品推荐
相关产品推荐

