字符串999999999.9999999999舍入为1,000,000,000 BigDecimal

时间:2014-10-29 15:27:11

标签: java bigdecimal

我有一个问题,当我解析它时,我的999999999.9999999999字符串被舍入为1,000,000,000 BigDecimal。

代码:

NumberFormat format = new DecimalFormat("#.0000000000######");
format.setParseIntegerOnly(false);
Number number = format.parse(text);

结果: number = 1.0E9

如果我使用相同的格式将结果BigDecimal解析回String:

format.format(number) results in 1,000,000,000

为什么会发生这种情况以及我如何强制原始的format.parse(text)调用不要圆?

1 个答案:

答案 0 :(得分:3)

除非您遗漏了一些代码,否则parse会返回Double,而不是BigDecimal。 (请尝试System.out.println(number.getClass())进行检查。)

如果您想要BigDecimal,则必须使用setParseBigDecimal告诉它返回BigDecimal。 (要做到这一点,format必须声明为DecimalFormat。)

DecimalFormat format = new DecimalFormat("#.0000000000######");
format.setParseBigDecimal(true);
Number number = format.parse(text);