私のプロジェクトでは、APIから文字列値を取得しており、別のAPIにdouble値を渡す必要があります。文字列値からdoubleに解析しようとすると、元のデータが取得されません。
これがコードです。
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
元の値を取り戻すことはできません。このJavaの浮動小数点(Im)Precisionを参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加