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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 兜兜转转 中级黑马   /  2013-8-14 09:45  /  1135 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 兜兜转转 于 2013-8-15 08:58 编辑
  1. double i = 2.1;
  2. double j = 3.0;
  3. System.out.println(i*j);
复制代码
执行结果怎么是6.300000000000001啊?
今天在用AWT写个简单计算器的时候,东西写出来了,但在测试的时候发现的小bug?这个是怎么回事呢?正常不是6.3吗?

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

5 个回复

倒序浏览
double是浮点数,它的小数点的位置是“浮动”的,所以很难说double类型能精确到小数点后面几位。通常这个关于精度的问题都是通过它能表示的有效数字(十进制)的位数来表示的。

遵循IEEE标准的8字节(64位)的double能表示的有效数字的位数是:15 ~ 16。
回复 使用道具 举报
精度丢失,小数计算时。就比如3.0/3!=1  一个道理.
回复 使用道具 举报
双精度
System.out.println(Double.MAX_VALUE) ;
System.out.println(Double.MIN_VALUE);
这两行代码,直接可以求出double的取值范围,
他的范围一取出你就知道为什么了!
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马