A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Fightin黑马 于 2014-9-19 18:10 编辑

以下代码运行结果是 true
        double x = 10.0;
        double y = 0;
        System.out.println(x / y == x / y);


以下代码运行结果是false
        double x = 10.0;
        double y = 0;
        System.out.println(x % y == x % y);
是什么原理呢?

36 个回复

倒序浏览
这个跟浮点数的二进制表示有关。Java的浮点数采用IEEE754标准来表示,根据这个标准,正无穷大和负无穷大分别有唯一的二进制表示,而NaN(not a number)的二进制表示不唯一。10.0/0结果是正无穷大,二进制表示是唯一的,因此是true。10.0 % 0的结果是NaN,二进制表示不唯一,因此false

点评

涨知识了!顶一个  发表于 2014-8-9 13:02
给力,回答的很好!  发表于 2014-8-9 00:59
顶一个  发表于 2014-8-8 22:30
围观大神回答  发表于 2014-8-8 22:04
赞  发表于 2014-8-8 21:11
很牛逼的额啊  发表于 2014-8-8 13:04

评分

参与人数 1黑马币 +5 收起 理由
m313786372 + 5 =,=评分以示膜拜

查看全部评分

回复 使用道具 举报 5 0
fantacyleo 发表于 2014-8-7 22:24
这个跟浮点数的二进制表示有关。Java的浮点数采用IEEE754标准来表示,根据这个标准,正无穷大和负无穷大分 ...

大哥干啥的,知道的这么全
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 22:24
这个跟浮点数的二进制表示有关。Java的浮点数采用IEEE754标准来表示,根据这个标准,正无穷大和负无穷大分 ...

亲  很牛逼的说  我想加下你QQ  可否愿意透入?
回复 使用道具 举报
牛人,顶一个
回复 使用道具 举报
学习了,果然牛人一个二楼。
回复 使用道具 举报
路过~~        
回复 使用道具 举报
二楼讲解犀利啊。。
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 22:24
这个跟浮点数的二进制表示有关。Java的浮点数采用IEEE754标准来表示,根据这个标准,正无穷大和负无穷大分 ...

大神,看过不少你的回答...
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 22:24
这个跟浮点数的二进制表示有关。Java的浮点数采用IEEE754标准来表示,根据这个标准,正无穷大和负无穷大分 ...

很犀利,学习了
回复 使用道具 举报
不明觉厉啊   顶一个
回复 使用道具 举报
顶一个~:L
回复 使用道具 举报
学习           
回复 使用道具 举报
围观二楼专业的回复~~
回复 使用道具 举报
陶圣虎 来自手机 中级黑马 2014-8-8 21:39:02
15#
学习了。。。
回复 使用道具 举报
原来真有大神啊。。
回复 使用道具 举报
二楼好犀利啊,膜拜中
回复 使用道具 举报
2楼 大神。 真专业。
回复 使用道具 举报
fantacyleo 发表于 2014-8-7 22:24
这个跟浮点数的二进制表示有关。Java的浮点数采用IEEE754标准来表示,根据这个标准,正无穷大和负无穷大分 ...

大神回复很棒
回复 使用道具 举报
2L专业解答大神出没
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马