我想在Java中使用加号,减号或无符号来解析十进制数,并获得BigDecimal
的实例。这可以通过调用构造函数new BigDecimal(string)
来实现。它为以下所有字符串生成适当的结果:
"1", "12", "123", "123.0", "+123.0", "-123.0", "+123", "-123"
但是,我需要根据特定的语言环境解析字符串,即使用逗号小数分隔符。有没有办法根据特定的区域设置解析所有这些数字?
我尝试了NumberFormat
和DecimalFormat
但无法正确配置。
final DecimalFormat valueParser = (DecimalFormat) NumberFormat.getNumberInstance(new Locale("cs"));
valueParser.setParseBigDecimal(true);
此类valueParser
不接受加号。可以选择将模式设置为DecimalFormat
。但是,加号可以在模式中指定为可选吗?
答案 0 :(得分:3)
您可以创建一个接受或更好地需要前导“+”的DecimalFormat。
DecimalFormat f (DecimalFormat)NumberFormat.getNumberInstance(new Locale(...));
f.setPositivePrefix("+");
f.parse("+123");
但前缀不可选,因此对您的情况没有帮助。 作为一个非常简单的解决方案,为什么不检查(修剪)字符串,如果以'+'字符开头,那么在将字符串传递给DecimalFormats解析方法之前剪切前导'+'。