Hallo,
ich habe da mal eine eigentlich banale Frage zu folgendem Code:
Ich will eine Kommazahl mal Hundert nehmen.
Bei den Berchnungen kommt bis in Zeile "double dErg2 = dA * dC;" genau
das von mir erwaretete Ergebnis heraus. Doch in dieser Zeile kommt nicht 1999,00 raus, sondern 1998,99999998.
Dieses Verhalten beobachte ich auch bei einigen anderen Zahlen.
Manchmal tritt es bei float auf und manchmal bei double, je nachdem, was für ein Wert * 100 genommen wird.
Warum ist das so, mache ich was falsch? Es kann doch nicht sein,
dass ich für solch eine einfache Rechnung immer einen BigDeciaml oder
mit Math.round() runden muss.
Kann mir das jemand erklären?
Vielen Dank im voraus
ich habe da mal eine eigentlich banale Frage zu folgendem Code:
Java:
public class Main {
public static void main(String[] args)
{
float fA = 100f;
float fB = 29.99f;
float fC = 19.99f;
float fErg1 = fA * fB;
float fErg2 = fA * fC;
System.out.println("Ergebnis Float: " + fErg1 + " , " + fErg2);
double dA = 100d;
double dB = 29.99d;
double dC = 19.99d;
double dErg1 = dA * dB;
double dErg2 = dA * dC;
System.out.println("Ergebnis Double: " + dErg1 + " , " + dErg2);
}
Ich will eine Kommazahl mal Hundert nehmen.
Bei den Berchnungen kommt bis in Zeile "double dErg2 = dA * dC;" genau
das von mir erwaretete Ergebnis heraus. Doch in dieser Zeile kommt nicht 1999,00 raus, sondern 1998,99999998.
Dieses Verhalten beobachte ich auch bei einigen anderen Zahlen.
Manchmal tritt es bei float auf und manchmal bei double, je nachdem, was für ein Wert * 100 genommen wird.
Warum ist das so, mache ich was falsch? Es kann doch nicht sein,
dass ich für solch eine einfache Rechnung immer einen BigDeciaml oder
mit Math.round() runden muss.
Kann mir das jemand erklären?
Vielen Dank im voraus
Zuletzt bearbeitet von einem Moderator: