带有java.text.DecimalFormat

时间:2015-07-07 10:31:57

标签: java number-formatting

我想在Java中使用加号,减号或无符号来解析十进制数,并获得BigDecimal的实例。这可以通过调用构造函数new BigDecimal(string)来实现。它为以下所有字符串生成适当的结果:

"1", "12", "123", "123.0", "+123.0", "-123.0", "+123", "-123"

但是,我需要根据特定的语言环境解析字符串,即使用逗号小数分隔符。有没有办法根据特定的区域设置解析所有这些数字?

我尝试了NumberFormatDecimalFormat但无法正确配置。

final DecimalFormat valueParser = (DecimalFormat) NumberFormat.getNumberInstance(new Locale("cs"));
valueParser.setParseBigDecimal(true);

此类valueParser不接受加号。可以选择将模式设置为DecimalFormat。但是,加号可以在模式中指定为可选吗?

1 个答案:

答案 0 :(得分:3)

您可以创建一个接受或更好地需要前导“+”的DecimalFormat。

    DecimalFormat f (DecimalFormat)NumberFormat.getNumberInstance(new Locale(...));
    f.setPositivePrefix("+");
    f.parse("+123");

但前缀可选,因此对您的情况没有帮助。 作为一个非常简单的解决方案,为什么不检查(修剪)字符串,如果以'+'字符开头,那么在将字符串传递给DecimalFormats解析方法之前剪切前导'+'。