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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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);
        }
}
为啥第一条语句的结果正确,而第二条就不行呢?有差别么?

3 个回复

倒序浏览
神马情况?能贴一下结果出来吗?亲
回复 使用道具 举报
本帖最后由 ok-Prince 于 2014-3-11 19:44 编辑
天凌蓝 发表于 2014-3-11 19:39
神马情况?能贴一下结果出来吗?亲


file:///F:qq.jpg

QQ.jpg (7.84 KB, 下载次数: 54)

QQ.jpg
回复 使用道具 举报
   该程序打印出来的小数,是足以将double 类型的值与最靠近它的临近值区分出来的最短的小数,它在小数点之前和之后都至少有一位。而1.1 这个数字不能被精确表示成为一个double,因此它被表示成为最接近它的double 值。该程序从2 中减去的就是这个值。这个计算的结果并不是最接近0.9 的double 值,所以并不是所有的小数都可以用二进制浮点数来精确表示的。你可以看看Java的API文档Java.lang.Double的toString()方法,里面有说

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马