W moim projekcie otrzymuję ciąg znaków z api i trzeba przekazać podwójne wartości do innego api. Kiedy próbuję parsować z wartości ciągu do podwójnego, nie otrzymuję oryginalnych danych.Parsowanie podwójne na łańcuchu dając nieprawidłowy wynik
Oto kod.
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)));
Wyjście jest
11352721345377306.00
11352721346734308.00
11352721346734308.00
11352721346734308.00
Co poszło nie tak? Czy jest jakiś problem z parsowaniem? Jak mogę odzyskać oryginalne wartości?
Edit: Bez użycia dziesiętny Format:
1.1352721345377306E16
1.1352721346734308E16
1.1352721346734308E16
1.1352721346734308E16
Wykorzystanie 'BigDecimal' aby uzyskać wartość. 'BigDecimal dec = new BigDecimal (l4); \t System.out.println (df.format (dec)); ' – Truthira
@ThanigaiArasu Dzięki. Muszę przekazać wartość "podwójną", ponieważ źródła api nie można edytować. :) –