编程语言
首页 > 编程语言> > 带有java.text.DecimalFormat的可选加号

带有java.text.DecimalFormat的可选加号

作者:互联网

我想用加号,减号或无号解析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.但是,可以在模式中将加号指定为可选吗?

解决方法:

您可以创建一个DecimalFormat来接受或更好地要求以“”开头.

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

但是,前缀不是可选的,因此对您的情况无济于事.
作为一个非常简单的解决方案,在将字符串传递给DecimalFormats解析方法之前,为什么不检查以(‘)字符开头的字符串(如果是这样),并且在这种情况下,请切掉前导’的字符串.

标签:number-formatting,java
来源: https://codeday.me/bug/20191120/2040980.html