黑马程序员技术交流社区
标题:
求解释
[打印本页]
作者:
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