繁体   English   中英

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

[英]Optional plus sign with java.text.DecimalFormat

我想在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 但是,加号可以在模式中指定为可选项吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM