问题描述
- 100*5.11 = 511.00000000000006
-
System.out.println(100*5.11);//511.00000000000006100*5.11 应该 = 511
但是java中进行运算得到的结果是 511.00000000000006
请问这是问什么?
如果要得到正确的结果有解决办法吗?谢谢~~
解决方案
改成System.out.println((int) (100 * 5.11));就可以了
解决方案二:
这是由于发生了数据类型的转换造成的结果。
100是整型,5.11是浮点型,两者相乘发生向上转换成浮点型。
你看下基本数据类型的知识就明白了。
System.out.println((int) (100 * 5.11));//强制类型转换为整型即可。
解决方案三:
都转化为float类型即可
System.out.println((float)5.11*(float)100);
解决方案四:
都转化为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) );
时间: 2024-11-03 22:11:32