2017-09-12 13 views
-3

json配列をいくつかの値で解析しようとしています。 "0.00009800"のような長い値にはいくつか問題があります。jsonは自動フォーマットのないlong double値を解析します

jsonObject.getDoubleとgetStringを試しました。9.8E-5を返します。 同じ結果でBigDecimalも試しました。

私には欠けている簡単な解決策があります。

tmp.high24h = Double.valueOf(e.getString("High")); 
tmp.low24h = java.math.BigDecimal.valueOf(e.getDouble("Low")).doubleValue(); 
+0

をあなたのコードを表示することができますか? –

答えて

2

9.8E-5が期待値です。それは9.8 * 10^(-5)を表します。

+0

私は知っていますが、そのフォーマットを使用しない方法は? – Vadim

+0

ダブルに解析しているなら、*は値です。それはあなたのコンソールやREPLにその出力文字列で表現されているだけです。書式設定は実際には関係ありません。フォーマットを気にする必要がある場合は、 'toFixed'メソッドのようなものを使って文字列に変換する必要があります。 – syrion

0

常に使用してください。文字列より大きい10進値の場合は、データ型。 json文字列をjavaオブジェクトに変換した後、文字列をBigDecimalコンストラクタの引数としてBigDecimal値に変換します。

+0

双方向試行 - 同じ結果 tmp.high24h = Double.valueOf(e.getString( "High")); tmp.low24h = java.math.BigDecimal.valueOf(e.getDouble( "Low"))。doubleValue(); – Vadim

0

はそれを手に入れた:

tmp.high24h = e.getDouble("High"); 
String test = String.format(Locale.US, "%.5f", tmp.high24h); 
関連する問題