首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于小数点后四舍五入保留小数的方法,该如何解决

2012-04-18 
关于小数点后四舍五入保留小数的方法Java codedoublef111231.5585BigDecimalbnewBigDecimal(f)doublef

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

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");

热点排行