Frage von Suad21191, 20

Wie rundet mein Programm im Java Editor das Ergebnis auf 2 Nachkommastellen?

Hallo :) Ich habe vor kurzem in der Schule Informatik und unser Lehrer besteht darauf, dass wir Probleme selber lösen. Wir mussten also ein Programm erstellen in welchem man Parkgebühren berechnet. Das Parken ist in den ersten beiden Stunden kostenlos und jede weitere angefangene Stunde kostet 2€. Die Parkzeit soll dabei in Minuten eingelesen werden. Außerdem ist eine Höchstgebühr von 30€ festgesetzt. Ich habe bis jetzt alles hingekriegt aber es gibt paar Sachen die ich laut meinem Lehrer verbessern sollte. Zunächst könnt ihr den Quellcode sehen:

double zeit, gebühr;

zeit = Double.valueOf(System.console().readLine("Bitte geben sie die Zeit in Minuten an: "));

if (zeit<120) {
  System.out.println(0);
  
} else {
  if (zeit>1020) {
    System.out.println(30 + " Euro");
  } else {
    
    gebühr = zeit * 1/30 -4;
    System.out.println(gebühr + " Euro");

Es funktioniert alles gut, nur was muss ich schreiben damit die Gebühren auf 2 Nachkommastellen gerundet wird und wo genau muss ich es hinschreiben? Gibt es auch eine Möglichkeit statt 1/30 0.03 Periode aufzuschreiben ohne 0.03333... zu schreiben? Und ist es normal, dass die Konsole das Eurozeichen € nicht erkennt sonst würde ich auch das reinschreiben. Ich weiß für welche die erfahren in Informatik sind ist dieses Problem lächerlich, aber könntet ihr mir bitte helfen? Ich hab mit Informatik erst vor kurzem angefangen und weiß nicht genau wie das geht. Ich würde mich freuen, wenn ihr meine Fragen beantworten würdet :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von SirNik, 20

Math.round(zahl * 100.0)/100.0;

anstatt nur 100 machst du 100.0 oder 100d, denn sonst Castet er das Ergebnis in ein int, und deine Nachkommastellen sind verloren. aber da du ein Double willst, machst du mit .0 oder d

Antwort
von SirNik, 19

Hinter dem € zeichen steckt natürlich ne Codierung die nicht im ascii steht.

D.h. jedes Betriebssystem/bzw benutze Codierung kann die codierung hinter dem € zeichen anders interpretieren.

Du musst gucken welche codierung dein system und die ide verwendet und dementsprechend anpassen.

Oder du nimmst statt € einfach ¤, das is im ascii definiert und es ist das allgemeine Währungssymbol, es steht also stellvertretend für alle Währungen

Antwort
von Unkreatiiiev, 19
myNumber = Math.round(myNumber * 100) / 100;

So wird das Komma erst um zwei Stellen nach links verschoben und dann gerundet. Nach der Division bleiben zwei Kommastellen übrig.

Das ganze funktioniert natürlich auch mit der Methode "format" in der Klasse String.

Kommentar von Suad21191 ,

Der rundet jetzt nur z.B. von 13.4233 zu 13.0 :(

Kommentar von SirNik ,

Ja, liegz daran, dass er mit einem int dividiert, da gehen die nachkomma stellen verloren. einfach statt 100,100.0 oder 100d

Kommentar von Unkreatiiiev ,

Danke. Hab' ich übersehen.

Nebenbei ist für Rechnungen mit Geld o.ä. BigInteger zu empfehlen.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten