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