黑马程序员技术交流社区

标题: 求解释 [打印本页]

作者: kingkeykang    时间: 2015-8-25 19:10
标题: 求解释
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
为什么???
作者: zp转身就忘    时间: 2015-8-25 19:39
做运算时不要用浮点型数,Java中的浮点数类型float和double不能够进行精确运算。
作者: kingkeykang    时间: 2015-8-25 19:51
最后一个怎么是正确的结果?
作者: kingkeykang    时间: 2015-8-25 19:54
zp转身就忘 发表于 2015-8-25 19:39
做运算时不要用浮点型数,Java中的浮点数类型float和double不能够进行精确运算。 ...

最后一个怎么是正确的结果?
作者: sven556677    时间: 2015-8-25 20:26
具体说不太清,以前看JS的时候遇到过,好像是因为二进制对这种浮点的运算的处理造成的。
作者: 放飞邹莺    时间: 2015-8-25 21:26
因为你直接输出的,系统默认的为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);




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