黑马程序员技术交流社区
标题:
打印结果吓了我一跳,这是啥情况。。。
[打印本页]
作者:
ok-Prince
时间:
2014-3-11 19:37
标题:
打印结果吓了我一跳,这是啥情况。。。
本帖最后由 ok-Prince 于 2014-3-11 21:07 编辑
class Cz1
{
public static void main(String[] args)
{
System.out.println(5.0-2.1);
System.out.println(2.0-1.1);
}
}
为啥第一条语句的结果正确,而第二条就不行呢?有差别么?
作者:
天凌蓝
时间:
2014-3-11 19:39
神马情况?能贴一下结果出来吗?亲
作者:
ok-Prince
时间:
2014-3-11 19:42
本帖最后由 ok-Prince 于 2014-3-11 19:44 编辑
天凌蓝 发表于 2014-3-11 19:39
神马情况?能贴一下结果出来吗?亲
file:///F:qq.jpg
QQ.jpg
(7.84 KB, 下载次数: 53)
下载附件
2014-3-11 19:43 上传
作者:
天凌蓝
时间:
2014-3-11 19:57
该程序打印出来的小数,是足以将double 类型的值与最靠近它的临近值区分出来的最短的小数,它在小数点之前和之后都至少有一位。而1.1 这个数字不能被精确表示成为一个double,因此它被表示成为最接近它的double 值。该程序从2 中减去的就是这个值。这个计算的结果并不是最接近0.9 的double 值,所以并不是所有的小数都可以用二进制浮点数来精确表示的。你可以看看Java的API文档Java.lang.Double的toString()方法,里面有说
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2