Funktioniert Modulo bei Java auch mit float normal?

...komplette Frage anzeigen

2 Antworten

Funktioniert Modulo bei Java auch mit float normal

Ja.

Wäre also 1.1f % 0.3f = 0.2f?

Nein.

Wenn man mit Komma-Zahlen in Java rechnet, kommt es sehr häufig zu Ungenauigkeiten. Dies ergibt sich aus der Tatsache, wie Nachkommastellen gespeichert werden.

In Float nochmal anders als in Double. - Die Genauigkeit von Double ist besser als in Float, weshalb du hier auch besser Double verwenden solltest, sofern du diese Rechnung machen möchtest.

Ein entsprechendes Ergebnis würdest du erhalten, wenn du mit Double (Mit Hilfe von BigDecimal) rechnest:

System.out.println(Arrays.toString(BigDecimal.valueOf(1.1).divideAndRemainder(BigDecimal.valueOf(0.3))));

Probiers aus:

class ModuloTest{
public static void main(String[] args){
float a = 1.1f;
float b = 0.3f;
float c = a%b;
System.out.println(c);
}
}

P.S.: Ausgabe: 0.19999999 mit double statt float gibts 0.20000000000000012

Was möchtest Du wissen?