-4

この形式の数値を含む CSV ファイルがあります。グループ区切り記号であり1,234.56、小数点区切り記号です。Camel Bindy を使用して、その数値を BigDecimal として解析したいと思います。これは、この番号のモデル クラスの一部です。,.

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

現在の問題はjava.lang.NumberFormatException、正しいパターンが適用されていても、これによりエラーが発生することです。注釈からそのパターンを削除し、データ ファイルの数値からグループ区切り記号を削除すると、すべて正常に機能します。または、Doubleの代わりに typeを使用する場合BigDecimal

Camel Bindyのドキュメントには、BigDecimal のグループ化セパレータを設定できると記載されていますが、その情報の下にある表には、パターンは BigDecimal タイプではなく Decimals に対してのみサポートされていることが示されています。

また、使用されているFormatFactoryクラスのソース コードは、パターンが BigDecimal 型には使用されないことを示しています。

私の質問は次のとおりです。言及されているドキュメントのように、BigDecimal タイプのグループ区切り記号を設定して使用するにはどうすればよいですか? それとも、これは現在サポートされていないので、Double代わりに使用する必要がありますか?

PS: ロケールは現在 に設定されていen_USます。

4

2 に答える 2

4

Camel バインド モデルの @DataField は、データを BigDecimal に解析するためのグループ セパレータではなく、パターンのようなパラメータ精度を提案します

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

パターンだけでは不十分ですか?

于 2014-08-20T17:36:29.307 に答える