tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Tsunamii
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1186
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Duckemai
    Duckemai Duckemai ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Beiträge
    31
    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
     

  2. #2
    Tsunamii Tsunamii ist offline Mitglied Silber
    Registriert seit
    Jul 2009
    Beiträge
    75
    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 :
    1
    2
    3
    
    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 :
    1
    2
    3
    
    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 :
    1
    2
    
    formatter = new DecimalFormat("0.00000E0");
    System.out.println(formatter.format(test2));
    --> 1,00000E10

    Ich hoffe ich konnte dir weiterhelfen
    Geändert von Tsunamii (13.08.10 um 11:20 Uhr)
    Duckemai bedankt sich. 

  3. #3
    Avatar von Duckemai
    Duckemai Duckemai ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Beiträge
    31
    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
     

  4. #4
    Avatar von Duckemai
    Duckemai Duckemai ist offline Mitglied Bronze
    Registriert seit
    Feb 2010
    Beiträge
    31
    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
     

  5. #5
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    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_EVEN
     
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    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

  1. ERM Tool für MC-Notation
    Von StupidBoy im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 08.11.10, 23:07
  2. Scientific Linux installieren / Problem
    Von bobbydigital im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 20.11.08, 11:29
  3. Landau-Notation aussprechen
    Von bled im Forum Smalltalk
    Antworten: 5
    Letzter Beitrag: 23.06.07, 20:21
  4. NPlot: Scientific Charting in .Net
    Von Thomas Darimont im Forum .NET Café
    Antworten: 0
    Letzter Beitrag: 16.05.07, 11:46
  5. Antworten: 4
    Letzter Beitrag: 22.05.06, 15:13