1. java 常见的做法是强转为整形,然后判断是否相等,例如:
这肯定是有问题的,比如a是一个很大的数,已经超出int的范围,那么强转就报错了,用long类型好一点。而且阿里巴巴代码规范也提示这样写不规范,原因以及推荐的写法都在图里。
2. 还有就是对于js这种弱类型语言,向下取整判断是否相等。
Math.floor(1.23) === 1
3. 还有一种偷懒的写法,直接 mod 1 == 0 即可,Java和js都可以使用,但也同样存在精度问题,比如:1.0000000000000001 % 1,它的结果是0。
综上所述:以上写法平时写问题不大,可以用用。但是在特定领域的项目里,请参考阿里的推荐写法,定义一个足够小、符合你们项目实际需求的变量 ɛ ,这个值在java中比如设置为Double.MIN_VALUE,两数相减取绝对值小于该变量,我们就认为是相等的。