私のプロジェクトでは、APIから文字列値を取得しており、別のAPIに二重の値を渡す必要があります。文字列の値を2倍に解析しようとすると、元のデータが得られません。文字列をダブル解析して間違った結果を返す
ここにコードがあります。
String l1="11352721345377306";
String l2="11352721346734307";
String l3="11352721346734308";
String l4="11352721346734309";
DecimalFormat df = new DecimalFormat(".00");
System.out.println(df.format(Double.parseDouble(l1)));
System.out.println(df.format(Double.parseDouble(l2)));
System.out.println(df.format(Double.parseDouble(l3)));
System.out.println(df.format(Double.parseDouble(l4)));
出力は
11352721345377306.00
11352721346734308.00
11352721346734308.00
11352721346734308.00
は、何が間違っていたのですか?解析に問題はありますか?元の値を戻すにはどうすればいいですか?
編集:10進フォーマットを使用せず:
1.1352721345377306E16
1.1352721346734308E16
1.1352721346734308E16
1.1352721346734308E16
使用 'BigDecimal'は値を取得します。 'BigDecimal dec =新しいBigDecimal(l4); \t System.out.println(df.format(dec)); ' – Truthira
@ ThanigaiArasuありがとう。私はAPIのソースが編集可能ではないので、二重の値を渡す必要があります:) –