我需要能够将"1.000,"
字符串解析为值为1000
的BigDecimal,然后将同一个BigDecimal解析回"1.000,"
字符串。如何使用EU小数点分隔符将BigDecimal解析为文本,但最后没有十进制数字?
两者都应该使用格式相同的DecimalFormat
格式化程序。 为什么?因为我需要在每个阶段结束时比较两个字符串是否相等,这意味着解析是否正确。
到目前为止,我试图使用这两种模式:DecimalFormat("###.##0,")
和DecimalFormat("0,")
但他们不会在最后产生确切的“1.000”。
这里是我的代码:
List<NumberFormat> formats = new ArrayList<NumberFormat>();
formats.add(DecimalFormat("###.##0,"));
formats.add(DecimalFormat("0,"));
for(NumberFormat format : formats) {
Number number = format.parse(text);
format.setParseIntegerOnly(false);
if (number != null && format(format, number).equals(text)) {
return true;
}
}
问题在哪里? – Jens 2014-10-08 13:46:54
当然'1.000,'不能是任何格式的有效数字。 – biziclop 2014-10-08 13:50:01
问题是格式(格式,数字)调用不会让我回到任何这些格式化程序的“1.000”字符串 – goe 2014-10-08 13:50:06