1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Scientific Notations

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Duckemai, 25.09.2010.

  1. Duckemai, 25.09.2010 #1
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Hallo zusammen,

    ich arbeite derzeit an einer Berechnung mit Scientific Notations. Nutze dafür:

    NumberFormat formatter = new DecimalFormat();
    formatter = new DecimalFormat("0.#####E+0");

    Das Ergebnis gefällt mir aber gar nicht. So ist hiernach die Summe aus 9.99999999 + 9.99999999 = 20.0 !!!!

    Ich suche eine Lösung, dass er mir IMMER 5 Nachkommastellen berechnet (also 9er auch nicht rundet) und dann auch immer ein zB E8 schreibt. Gibt es sowas als fertige Methode?

    Merci!
     
  2. BenOtto, 26.09.2010 #2
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Was möchtest du denn was rauskommt? 19,999998 auf 5 stellen gerundet gibt eben 20.0.
     
  3. Duckemai, 27.09.2010 #3
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Hallo,

    danke für die Antwort.

    Das Ergebnis 20 suggeriert, dass hier 10 + 10 addiert wurden.
    Damit die Berechnung nicht augenscheinlich falsch wirkt, hätte ich
    gerne das Pattern auch so ausgeführt, wie ich es aufgebaut habe.
    Also:
    18.99999E8
     
  4. FelixL, 27.09.2010 #4
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Steht E8 nicht für 10^8?...
    Scientific Notation
    Nur wegen 10+10, ihr verwirrt mich wenn ihr dann mittendrin mit 1999999800 anfangt ;)
    Und erst recht mit 1899999000 :D

    Wenn ich dich richtig verstehe suchst du eher fix statt round, das schneidet die Zahl einfach an der Stelle die du wünschst ab, ohne zu runden.
    Eingebaut dürfte es das nicht geben, da das Ergebnis mathematisch nunmal falsch ist.
    Selbst bauen dürfte aber nicht so schwer sein?
     
    Duckemai bedankt sich.
  5. Duckemai, 27.09.2010 #5
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Ach ja. Haste recht. 18.99999E8 ist natürlich quatsch.

    Selbst zurechtschneiden scheint dann doch am sinnvollsten zu sein.

    Danke!
     
  6. Duckemai, 27.09.2010 #6
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Lässt sich denn eine Scientific-Ausgabe verhindern?

    Bei:
    double_zwischenErg = Double.valueOf(String_eingabe);

    macht er mir aus 9999999999 immer "endErg"= 9.999999999E9
     
  7. BenOtto, 27.09.2010 #7
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Versuch mal

    String.format("%f", double_zwischenErg);
     
    Duckemai bedankt sich.
  8. Duckemai, 27.09.2010 #8
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Hey cool. Das ist nicht schlecht.

    Wenn ich 9999999999 eingebe, dann macht er mir beim Wandel hin zu
    einem Double immer das:

    9.999999999E9

    Durch Deine Umwandlung bekomme ich nun: "9999999999.000000"

    Damit lässt sich arbeiten.

    Vielen Dank!
    Duckemai
     
  9. BenOtto, 27.09.2010 #9
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Bitte sehr!
     

Diese Seite empfehlen