-4

我有一个 CSV 文件,其中包含这种格式的数字:1,234.56作为,分组分隔符和.小数分隔符。我想使用 Camel Bindy 将该数字解析为 BigDecimal。这是这个数字的模型类的一部分:

@DataField(pos = 6, required = true, precision = 2, pattern = "#,###.##")
public BigDecimal value;

java.lang.NumberFormatException现在的问题是,即使应用了正确的模式,这也会导致错误。如果我从注释中删除该模式并从数据文件中的数字中删除分组分隔符,那么一切正常。或者,如果我使用Doubletype 而不是BigDecimal.

Camel Bindy 文档提到可以设置 BigDecimal 的分组分隔符,但该信息下方的表格表明该模式仅支持 Decimals 而不是 BigDecimal 类型。

此外,使用的FormatFactory类的源代码显示该模式不会用于 BigDecimal 类型。

所以我的问题是:如何为 BigDecimal 类型设置和使用分组分隔符,就像提到的文档一样?还是目前不支持此功能,我必须Double改用?

PS:语言环境当前设置为en_US.

4

2 回答 2

4

Camel bindy 模型的@DataField 提出了参数精度,就像模式一样,但不是分组分隔符来将数据解析为 BigDecimal

例子

@DataField(pos = 2, precision = 2, pattern = "00.00")
private BigDecimal bigDecimal;

图案对你来说还不够吗?

于 2014-08-20T17:36:29.307 回答
1

此功能已添加到 Camel Bindy中,可与以下注释类型一起使用:

@DataField(pos = x, precision = 2, pattern = "#,###.##")
private BigDecimal number;

或者:

@DataField(pos = x, precision = 2, pattern = "#,###.##", groupingSeparator = ",", decimalSeparator = ".")
private BigDecimal number;

第一个版本使用当前设置的Locale值。如果未设置,则可以使用第二个版本指定自己的分组和小数分隔符。

两个版本都可以解析如下数字:

1,000.00
-100
123,456,789.00
0.00

我猜包含此功能的第一个版本将是 version 2.14.0

于 2014-08-27T06:54:56.327 回答