scientific notation in Java

Duckemai

Mitglied
Hallo zusammen,

ich versuche derzeit ein Ergebnis als scientific notation darzustellen.

Folgendes habe ich gemacht:
NumberFormat formatter = new DecimalFormat();
formatter = new DecimalFormat("0.#####E+0");
String eingabe = "9999999999";
zwischenErg = 0.666666666 [Anm: 2/3]

zwischenErg += Double.valueOf(formatter.format(Double.valueOf(eingabe)));

Das Ergebnis ist: zwischenErg= 1.0000000000666666E10
Das ist aber länger als meine Formatvorlage!
Ich hätte es dem DecimalFormat entsp. gerne als : 0.#####E+0,
da meine Ausgabe nicht länger ist. Weiß jemand Rat?

Vielen Dank
Duckemai
 
das problem liegt darin dass du die Eingabe in ein vorgeschriebenes Format umwandelst, das Ergebnis dann aber weiterverwendest wodurch das Format natürlich überschrieben wird.

Hier mal nen kleines Beispiel:

Erst umwandeln dann nochmal rechnen:
Code:
formatter = new DecimalFormat("0.#####E0");
double test1 = Double.valueOf(formatter.format(Double.valueOf(eingabe))) + zwischenErg;
System.out.println(test1);
--> 1.0000000000666666E10

//Erst rechnen dann umwandeln
Code:
formatter = new DecimalFormat("0.#####E0");
double test2 = Double.valueOf(eingabe) + zwischenErg;
System.out.println(formatter.format(test2));
--> 1E10

//Wie 2. nur mit anderem Formatter
Code:
formatter = new DecimalFormat("0.00000E0");
System.out.println(formatter.format(test2));
--> 1,00000E10

Ich hoffe ich konnte dir weiterhelfen
 
Zuletzt bearbeitet:
Hallo,

und ob Du mir weiterhelfen konntest.
Dass sich das Format beim Speichern immer wieder auflöst, das hatte ich nicht berüchsichtigt.

Vielen Dank
Duckemai
 
Hallo zusammen,

ich greife das Thema von oben noch einmal auf, anstatt einen neuen Thread zu starten.
Es ging ja um die Nutzung von :
formatter = new DecimalFormat("0.#####E0"); //Scientific Notation

Nun habe ich aber einen Fehler in der Ausführung dieser Zeile gefunden.
Wenn ich rechne: 9999999999*9999999999 dann bekomme ich als ScientificNotation
das Ergebnis: 1.0E20

Das ist aber falsch, da es richtigerweise heißen müsste: 9.99999E19 (also mit 9ern)

Weiß jemand, wie ich das Pattern richtig angeben muss, um auch das richtige Ergebnis zu
bekommen?

Vielen Dank
Duckemai
 
Zurück