日期:2014-05-20  浏览次数:20666 次

精度问题,谢谢!
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