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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kingkeykang 初级黑马   /  2015-8-25 19:10  /  461 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args) {
                System.out.println(3.0-2.1);
                System.out.println(2.0-1.1);
                System.out.println(1.0-0.1);
结果:0.8999999999999999
        0.8999999999999999
        0.9
为什么???

5 个回复

正序浏览
因为你直接输出的,系统默认的为double类型,他会损失精度,改用float类型就可以了.
                float a=(float) (3.0-2.1);
                float b=(float) (2.0-1.1);
                float c=(float) (1-0.9);
                System.out.println(a);
        System.out.println(b);
        System.out.println(c);
回复 使用道具 举报
具体说不太清,以前看JS的时候遇到过,好像是因为二进制对这种浮点的运算的处理造成的。
回复 使用道具 举报
zp转身就忘 发表于 2015-8-25 19:39
做运算时不要用浮点型数,Java中的浮点数类型float和double不能够进行精确运算。 ...

最后一个怎么是正确的结果?
回复 使用道具 举报
最后一个怎么是正确的结果?
回复 使用道具 举报
做运算时不要用浮点型数,Java中的浮点数类型float和double不能够进行精确运算。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马