我有一个问题,当我解析它时,我的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)调用不要圆?
答案 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);