php判断一个数是否能被另一个数整除问题,尤其是小数
今天遇到一个很小的问题,看起来很简单,但是还是花了我一些时间…
就是php判断一个数是否能被另一个数整除问题,尤其是小数。
开始是这样写的:
<?php
$money = '0.3';
if($money % 0.1 == 0){
echo '不能整除';
}
else{
echo '能整除';
}
0.3除以0.1,等于3,没人质疑吧。。然而一直进的是不能整除,给AI输出,包括Kimi、阿里的通义、百度的文心一言,给出的都是进能整除,实际在PHP环境跑的时候,走的就是不能整除,要搞疯。。
后面想了下,应该是和浮点数有关?
网上给出了很多先*10的方案,但是这样做也是有BUG的,万一他进来的是0.03呢?
然后又百度,有人给出下面的方法
<?php
$money = '0.3';
if ($money/0.1 != (int)($money/0.1)) {
echo '不能整除';
}
else{
echo '能整除';
}
这样输出的还是不能整除,$money/0.1 = 3,
(int)($money/0.1) = 2,(int)($money/0.1)尽然等于2!!!!
事实确实是这样。。。
最终,我用下面的方案解决了,思路是,先除,然后判断结果是否包含小数点….就解决了,感觉被蠢哭…
<?php
$money = '0.3';
if (strpos($money/0.1, '.') !== false) {
echo '不能整除';
}
else{
echo '能整除';
}
本文出自 俞凌龙博客,转载时请注明出处及相应链接。
本文永久链接: https://blog.jlwz.cn/392