读书人

关于小数点后四舍五入保留小数的方法,

发布时间: 2012-04-18 15:01:59 作者: rapoo

关于小数点后四舍五入保留小数的方法

Java code
double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();

我用这个方法来保留小数。当为2时结果是111231.56
当为1时,结果为111231.6
当为3时结果是:111231.558(按照四舍五入是不是应该是111231.559)为什么会这样?

[解决办法]
二进制浮点小数问题。

当你写:
double f = 111231.5585;
的时候,计算机实际存储的是:
double f = 111231.558499999999185092747211456298828125

所以后面你就理解了。

要解决这个问题,只能:
BigDecimal b = new BigDecimal("111231.5585");

读书人网 >J2SE开发

热点推荐