黑马程序员技术交流社区

标题: 关于double类型数据的问题 [打印本页]

作者: 兜兜转转    时间: 2013-8-14 09:45
标题: 关于double类型数据的问题
本帖最后由 兜兜转转 于 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吗?

作者: yan    时间: 2013-8-14 09:51
double是浮点数,它的小数点的位置是“浮动”的,所以很难说double类型能精确到小数点后面几位。通常这个关于精度的问题都是通过它能表示的有效数字(十进制)的位数来表示的。

遵循IEEE标准的8字节(64位)的double能表示的有效数字的位数是:15 ~ 16。
作者: 李永康    时间: 2013-8-14 10:30
精度丢失,小数计算时。就比如3.0/3!=1  一个道理.
作者: 张玉建    时间: 2013-8-15 00:47
双精度
System.out.println(Double.MAX_VALUE) ;
System.out.println(Double.MIN_VALUE);
这两行代码,直接可以求出double的取值范围,
他的范围一取出你就知道为什么了!
作者: EYE_SEE_YOU    时间: 2013-8-15 06:52
浮点数问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2