私は、データベースからの技術的なデータを取得し、二重の値を期待し、当社のデータベースにそれを置くためにそれを処理する必要があるのです。データベースからのエンティティはエレベーターであり、 "travel heigth、weigth、..:"のような技術データを持っています。
ソース-dbは、strings
の指数数値形式を使用します。つまり、 2.8300000000000000E+04
です。私は、この文字列を取り、このようDouble
に変換
:
public Double getDoubleNumberFromJSONString(String inputValue) {
return Double.valueOf(inputValue);
}
出力:28.300
(それは今、二重です)
問題:
のほとんどは時間は私のアプローチは動作しますが、ソースdbは指数関数の数値を出力しない場合がありますが、次のようなものがあります。
2,200.0 mm
...非指数関数の数値と単位。これはNumberFormatException
になります。
は、私は、ソース入力が実際に大きく変動することができるので、問題にアプローチする方法を知らない:
1.000 kg
... kg 1.000
... mm 2,000
... 350
... 350.0
... 350,0
を..
データベースではダブルフォーマットの番号が必要なので、単純にソース番号を転送することはできません。
私のソリューション・アプローチ:
public Object getDoubleNumberFromJSONString(String inputValue) {
// FIXME Throws an error
if(Double.valueOf(inputValue) instanceof Double){
return Double.valueOf(inputValue);
}
else{
System.out.println("Had to return inputValue in DoubleNumber()! Crash?");
return inputValue;
}
}
しかしDouble.valueOf(inputValue)
はすでにNumberFormatException
をスローしますので、私はどのように知らない:
は、私は、文字列が実際にDouble
かもしれないかどうかを確認するためにinstanceof
を使用しようとしましたこの状況に対処する。
質問:
どのように私はDouble
に正しく入力を解析することができますか?
測定単位の保持にも興味がありますか? –