[Java] Zahl auf zwei Stellen runden

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Net_Ghost03, 29. Oktober 2009 .

Schlagworte:
  1. 29. Oktober 2009
    Zahl auf zwei Stellen runden

    Hallo zusammen. Ich habe ein Problem. Ich soll ein Programm schreiben, was bestimmte Werte ausrechnet (Handelt sich um Euro Werte) und diese auf 2 Stellen runden.

    Aber ich darf keine externen Methoden / Funktionen benutzten. Sprich math.round() hab ich über google gefunden, darf ich aber nicht benutzten.

    Als Hilfestellung habe ich folgende Mathematische Formel:

    gerundeteZahl = 1 / 100 * [ 100 * zahl + (1/2) ]

    [ = untere Gauß Klammer.


    Nun habe ich aber nicht wirklich eine Idee wie ich dies Realisieren könnte. If usw darf ich auch nicht verwenden, nur Bedingte Ausdrücke (a<b) ? a : b ;
     
  2. 29. Oktober 2009
    AW: Zahl auf zwei Stellen runden

    ganz einfach:

    Code:
     double ss = 1.3383928923;
     int dd = (int) (ss*100);
     ss = (double) dd/100;
     System.out.println(ss);
     
  3. 29. Oktober 2009
    AW: Zahl auf zwei Stellen runden

    Ah wow danke, es läuft.
    Bin mir aber nicht sicher ob ich das alles ganz verstehe. ?(

    Code:
    double ss = 1.3383928923;
    
    Das ist klar, da erstellt er eine double Variable mit einem sehr langen kommawert.

    Code:
    int dd = (int) (ss*100);
    
    Da erstellt er eine int variable und castet int auf das ergebnis von double ss * 100.
    Das wären dann 133.8392...
    Dadurch dass es aber nach int gecastet wurde, verliert er ja die nachkommastellen.
    Wäre dann doch nur 133.

    Code:
    ss = (double) dd/100;
    
    hier wird der double variable 133 / 100 zugewiesen und double auf die 133 gecastet.
    Zwischenrechnung wäre dann 133.0 / 100 , die 100 wird dann durch implizierte typkonventierung in den breiteren datentypen konvertiert also double.
    Sprich es kommt 1.33 raus.

    Richtig?
     
  4. 29. Oktober 2009
    AW: Zahl auf zwei Stellen runden

    ja, das einzige Problem ist jetzt noch, dass es nicht rundet sondern nur abschneidet. Aber das kann man auch durch einen weiteren Trick beheben


    Code:
    double ss = 1.3383928923;
    int dd = (int) ((ss+0.005)*100);
    ss = (double) dd/100;
    System.out.println(ss);
    Jetzt rundet er so wie es sein soll... bei 0.005 auf und bei 0.004 ab...
     
  5. 29. Oktober 2009
    AW: Zahl auf zwei Stellen runden

    hm muss da nicht nur + 0.5 hin anstatt 0.005 ?
    weil in der formel steht ja auch nur + 1/2
     
  6. 29. Oktober 2009
    AW: Zahl auf zwei Stellen runden

    kommt natürlich drauf an auf welche Nachkommastelle du runden willst...

    Mit Mathe hast es wohl nicht so?^^ Benutz einen Debugger wenn du den Code nicht blickst. Eclipse oder netbeans debugger ist sehr gut.
     
  7. 29. Oktober 2009
    AW: Zahl auf zwei Stellen runden

    Ahh, heute ist nicht mein Tag. Hab erstmal die Formel für's Runden nicht gepeilt. Aber verstehs jetzt.

    Hab mich gerad nur gewundert, weil ich ein falsches Ergebnis raus hatte. Musste einen Verbrauch für 1 Jahr ausrechnen. Hab aber * 6 gerechnet. Also nur ein halbes jahr *facepalm*

    Naja auf jedenfall Danke für die schnelle Antwort.


    Achso nochwas, könnte ich nicht auch zweimal casten? so würde ich mir eine variable sparen.

    Also anstatt

    so:
    Oder geht das nicht?
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.