Ungenauigkeit bei doubles.

Status
Nicht offen für weitere Antworten.

Bit2_Gosu

Bekanntes Mitglied
Hallo ;)

ich habe einen double namens durchschnZeit

ich sage:

Code:
durchschnZeit = Math.round(durchschnZeit*100)*0.01;
		         
 System.out.println("durchschnittlich gebrauchte Zeit: " + durchschnZeit);

und trotzdem werden manchmal Werte wie "durchschnittlich gebrauchte Zeit: 103.74000000000001"

ausgegeben... aber ich hab doch extra Math.round() benutzt....

Was kann ich denn noch gegen diesen blöden Binärfehlerkrams machen... :roll:



Danke für Eure Hilfe !
 

Marco13

Top Contributor
Erstmal garnichts. Aber für die AUSGABE kannst du z.B. System.out.printf(...) oder ein NumberFormat verwenden. (Die API-Doku dazu ist recht ausführlich). Da kann man dann

NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(zahl));

die Anzahl der Nackommastellen aus 2 beschränken.
 

Bit2_Gosu

Bekanntes Mitglied
Hm danke !

Aber jetzt bricht er beimausführen mit

Exception in thread "main" java.lang.NullPointerException
at src.ampelsystem.Computer.takt(Computer.java:419)
at src.ampelsystem.Computer.<init>(Computer.java:276)
at src.ampelsystem.Main.main(Main.java:21)

ab...

Also an der Stelle
Code:
System.out.println(nf.format(durchschnZeit));
 

Marco13

Top Contributor
Dann muss nf null sein - und das kann nicht sein, weil er dann schon eine Zeile vorher abrauchen würde. Poste mal ein lauffähiges Beispiel.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben