2016-11-09 3 views
-1

Ich habe eine Zeichenfolge mit der Nummer 12345686844.71 und ich muss dies in Doppel konvertieren, so dass ich den gleichen Wert wie in der Zeichenfolge erhalten kann, um dies in der Formel verwenden. Dies wurde versucht von mir, aber das funktioniert nicht und wir bekommen den Wert als 1,2345686844 .... eigentlich sollte es der Wert gleich sein wie in String gespeichertProbleme mit der Analyse String zu double

double d = Double.parseDouble(string) 
+0

Mögliche Duplikat (http://stackoverflow.com/ Fragen/10577610/Was-ist-Unterschied zwischen Doppel-Parsdoubledstring-und-Double-valueofstring) –

Antwort

-3

double d = Double.parseDouble (string)

+0

Dies wurde von mir versucht, aber das funktioniert nicht und wir bekommen den Wert als 1.2345686844 .... Eigentlich sollte es sein der gleiche Wert wie in der Zeichenfolge – Sandeep

+1

Warum haben Sie einen Teil der Frage kopiert/eingefügt? – xenteros

-1

Sie können die in Java bereitgestellte Klasse BigDecimal verwenden.

BigDecimal value = new BigDecimal(str); 

ref: https://stackoverflow.com/a/3752626/7135460

+0

ok das ist in Ordnung, aber ich versuche, den gleichen Wert in Doppel-basierte Formel zum Beispiel zu speichern: Double z = x * (y/a), wo x ist doppelt und y ist doppelt und a ist große Dezimalzahl – Sandeep

1

Was Sie getan haben, ist richtig. Sie drucken die Nummer in wissenschaftlicher Notation.

Statt System.out.print() verwenden Sie die folgende:

double d = Double.parseDouble(string) 
System.out.printf("dexp: %f\n", d); 

Wenn Sie den ganzen Wert Ihrer Doppel eingefügt haben Sie würden sehen, dass es E am Ende des gedruckten Wert fast ist. Es steht für multiplied by 10 to the power of und da ist der Exponent.

Wichtig ist nicht, was gedruckt wird, sondern was im Speicher ist. Der in d gespeicherte Wert ist korrekt. Der gedruckte Wert könnte viele nutzlose abschließende Nullen haben.

Sie können auch die DecimalFormat-Klasse verwenden: [? Was Unterschied zwischen Double.parseDouble (string) und Double.valueOf (string) ist]

DecimalFormat df = new DecimalFormat("0", DecimalFormatSymbols.getInstance(Locale.ENGLISH)); 
System.out.println(df.format(d));