2 lizeping1992 lizeping1992 于 2014.02.11 00:59 提问

100*5.11 = 511.00000000000006

System.out.println(100*5.11);//511.00000000000006

100*5.11 应该 = 511

但是java中进行运算得到的结果是 511.00000000000006

请问这是问什么?
如果要得到正确的结果有解决办法吗?

谢谢~~

4个回答

p451933505
p451933505   2014.02.11 15:46

改成System.out.println((int) (100 * 5.11));就可以了

zdxing007
zdxing007   2014.02.11 16:36

这是由于发生了数据类型的转换造成的结果。
100是整型,5.11是浮点型,两者相乘发生向上转换成浮点型。
你看下基本数据类型的知识就明白了。
System.out.println((int) (100 * 5.11));//强制类型转换为整型即可。

tianyufeixiang9
tianyufeixiang9   2014.02.12 14:36

都转化为float类型即可
System.out.println((float)5.11*(float)100);

tianyufeixiang9
tianyufeixiang9   2014.02.12 14:43

都转化为float类型即可
System.out.println((float)5.11*(float)100);

或者都转化为BigDecimal,一定要转化为字符串
BigDecimal a1=new BigDecimal("100");
BigDecimal b1=new BigDecimal("5.11");
System.out.println("BigDecimal:"+a1.multiply(b1) );

Csdn user default icon
上传中...
上传图片
插入图片