php判断一个数是否能被另一个数整除问题,尤其是小数

作者: 龙哥 分类: 技术 发布时间: 2024-06-10 10:45 ė371 次浏览

今天遇到一个很小的问题,看起来很简单,但是还是花了我一些时间…

就是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

Ɣ回顶部