判断一个double类型的数是不是整数

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,两数相减取绝对值小于该变量,我们就认为是相等的。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值