Rundungsproblem

Raistlin

Mitglied
Moinsen,
so, ich oute mich direkt als absolut blutigen Anfänger in java. Hab grad mal den ersten Monat Informatikstudium hinter mir und stehe gerade vor einem Problem.
Aufgabenstellung in Programmieren 1 ist folgende:
Es soll eine Notenstaffelung ausgegeben werden,die ausgehend von einer maximal
erreichbaren Gesamtpunktzahl das zugehörige Punkteintervall für jede Notenstufe
ausgibt. Mein Problem: Die Punkte sollen auf eine Nachkommastelle gerundet werden. Soweit mein Programm bisher:

Java:
class Noten {
  public static void main (String[] args) {
    double total = Double.parseDouble (args[0]);
    double ninetyfive;
    double ninety;
    double eightyfive;
    double eighty;
    double seventyfive;
    double seventy;
    double sixtyfive;
    double sixty;
    double fiftyfive;
    double fifty;
    
    //Füllen der Punktevariablen
    
    ninetyfive = ((total/100)*95);
    ninety = ((total/100)*90);
    eightyfive = ((total/100)*85);
    eighty = ((total/100)*80);
    seventyfive = ((total/100)*75);
    seventy = ((total/100)*70);
    sixtyfive = ((total/100)*65);
    sixty = ((total/100)*60);
    fiftyfive = ((total/100)*55);
    fifty = ((total/100)*50);
    
  
    //Ausgabe der Punkteverteilung
    
    System.out.println ("1.0: " + (total) + " - " + (ninetyfive) + " " + "(100.0% - 95%)");
    System.out.println ("1.3: " + (ninetyfive - 0.1)+ " - " + (ninety) + " " + "(94.9% - 90%)");
    System.out.println ("1.7: " + (ninety - 0.1)+ " - " + (eightyfive) + " " + "(89.9% - 85%)");
    System.out.println ("2.0: " + (eightyfive - 0.1)+ " - " + (eighty) + " " + "(84.9% - 80%)");
    System.out.println ("2.3: " + (eighty - 0.1)+ " - " + (seventyfive) + " " + "(79.9% - 75%)");
    System.out.println ("2.7: " + (seventyfive - 0.1)+ " - " + (seventy) + " " + "(74.9% - 70%)");
    System.out.println ("3.0: " + (seventy - 0.1)+ " - " + (sixtyfive) + " " + "(69.9% - 65%)");
    System.out.println ("3.3: " + (sixtyfive - 0.1)+ " - " + (sixty) + " " + "(64.9% - 60%)");
    System.out.println ("3.7: " + (sixty - 0.1)+ " - " + (fiftyfive )+ " " + "(59.9% - 55%)");
    System.out.println ("4.0: " + (fiftyfive - 0.1)+ " - " + (fifty ) + " " + "(54.9% - 50%)");
    System.out.println ("5.0: weniger als "+ (fifty) + " Punkte"); 
  }
}
Ich schaffe es einfach nicht, die Punkte zu runden. Ich weiß, ihr löst hier keine Hausaufgaben (jep ich hab die Hinweise gelesen :D ) aber vielleicht kann mir ja jemand nen Schubs in die richtige Richtung geben.
 

Volvagia

Top Contributor
Um auf Nachkommastellen zu runden würde ich einfach die Zahl mit 10 * Nackommastellen multiplizieren, Math.round benutzen und sie wieder mit 10 * Nachkommastellen dividieren. Achte aber darauf, dass "ninetyfive = ((total/100)*95);" unter Umständen eine int zurückgibt (ich weiß nicht genau), besser wäre wenn der Divisor eine double ist, also "ninetyfive = ((total/100.0d)*95);".

btw. Schau dir mal Arrays an, damit hast du sicher mehr Freude.
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Kannst dir ja eine aussuchen:
Java:
double d =1.234567d;
//1. Möglichkeit
DecimalFormat f = new DecimalFormat("#0.00");
System.out.println("1. "+f.format(d));
//2. Möglichkeit
System.out.printf("%.2f\n", d);
//3. Möglichkeit
System.out.println(Math.round(d*100)/100d);
 

Raistlin

Mitglied
Das ging ja flott. Danke an euch beide. Ich werds ausprobieren.

[edit] Hat geklappt!!! Vielen Dank nochmal.[/edit]
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben