Mathematisch korrektes Verhalten bei Dezimalzahlen

Thomas Darimont

Erfahrenes Mitglied
Hallo!

Hab gestern Abend mit ein paar Kumpels darüber diskurtiert ob Java bestimmte Dezimalzahlen ab einer gewissen Stellenanzahl automatsich runden könnte und siehe
da das ist wirklich der Fall.

Code:
package de.tutorials;

public class Test22 {
	public static void main(String[] args) {
		double d = 0.9999999999999999;
		System.out.println(d); //0.9999999999999999

		d = 0.99999999999999999;
		System.out.println(d); //1.0
		
		d = 1.000000000000001; 
		System.out.println(d); //1.000000000000001
		
		d = 1.0000000000000001;
		System.out.println(d); //1.0
	}
}

Gruß Tom
 
teste das evtl. nochmal mit BigDecimal (gibts als Alternative und schneller auch von IBM) da dürfte das nicht mehr auftreten.

Gruss cham
 
cham hat gesagt.:
teste das evtl. nochmal mit BigDecimal (gibts als Alternative und schneller auch von IBM) da dürfte das nicht mehr auftreten.

Gruss cham

Allerdings soll die Verwendung von BigDecimal nicht gerade performant sein...
 
Snape hat gesagt.:
Allerdings soll die Verwendung von BigDecimal nicht gerade performant sein...
deswegen der Tipp mit IBM, die haben ne eigene Implementation. Abgesehen davon muss man eben abwägen ob das genaue Ergebnis oder die Performance mehr wiegt.
 
Zurück