1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1186
1186
EMPFEHLEN
-
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:
--> 1.0000000000666666E10Code :1 2 3
formatter = new DecimalFormat("0.#####E0"); double test1 = Double.valueOf(formatter.format(Double.valueOf(eingabe))) + zwischenErg; System.out.println(test1);
//Erst rechnen dann umwandeln
--> 1E10Code :1 2 3
formatter = new DecimalFormat("0.#####E0"); double test2 = Double.valueOf(eingabe) + zwischenErg; System.out.println(formatter.format(test2));
//Wie 2. nur mit anderem Formatter
--> 1,00000E10Code :1 2
formatter = new DecimalFormat("0.00000E0"); System.out.println(formatter.format(test2));
Ich hoffe ich konnte dir weiterhelfenGeändert von Tsunamii (13.08.10 um 11:20 Uhr)
-
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
-
28.09.10 12:56 #5
- Registriert seit
- Aug 2005
- Ort
- Karlsruhe (Baden-Württemberg)
- Beiträge
- 900
Ich verstehe nicht so ganz wo das Problem ist.
Bei der Rechnung 9999999999*9999999999 kommt 99999999980000000001 raus.
Und da nach dem Komma maximal 5 Stellen erlaubt sind wird danach gerundet, wodurch wir auf 1.0E20 rauskommen.
Das Runden Verhalten kann man mit setRoundingMode anpassen. Standard ist http://download.oracle.com/javase/6/...html#HALF_EVENWäre super wenn ihr euren Code in dieser Form einfügt:
[java]System.out.println("Hello World");[/java]Code java:1
System.out.println("Hello World");
Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
Blog: http://javaeffective.wordpress.com/
Ähnliche Themen
-
ERM Tool für MC-Notation
Von StupidBoy im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 08.11.10, 23:07 -
Scientific Linux installieren / Problem
Von bobbydigital im Forum Linux & UnixAntworten: 0Letzter Beitrag: 20.11.08, 11:29 -
Landau-Notation aussprechen
Von bled im Forum SmalltalkAntworten: 5Letzter Beitrag: 23.06.07, 20:21 -
NPlot: Scientific Charting in .Net
Von Thomas Darimont im Forum .NET CaféAntworten: 0Letzter Beitrag: 16.05.07, 11:46 -
Umgang mit wissenschaftlicher Notation
Von kjh im Forum PHPAntworten: 4Letzter Beitrag: 22.05.06, 15:13





Zitieren
Login




