关于小数点后四舍五入保留小数的方法
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");