当前位置: 代码迷 >> J2SE >> 精度有关问题,多谢
  详细解决方案

精度有关问题,多谢

热度:46   发布时间:2016-04-24 14:32:34.0
精度问题,谢谢!
double   d=8.7;
d*200=1739.9999999999998;

如何才能成为1740?

------解决方案--------------------
Math.round(d*200)=1740
不过注意返回的是long类型的哦,如果需要double要注意转换
------解决方案--------------------
强制转化成int型或用float型都可以
------解决方案--------------------
楼上的 强制转换int 难道不是 直接丢掉 小数点后面的 数字吗???

float倒是可以
------解决方案--------------------
这是浮点数的精度问题,没有办法的,如果你只是想显示得好看些,可以改成:

System.out.printf( "%.2f%n ", d*200 );
------解决方案--------------------
用BigDecimal
------解决方案--------------------
up
  相关解决方案