Wenn der Doppeltyp die Zahlen 4.35 und 435 verarbeiten kann, warum ergibt 4.35 * 100 den Wert 434.99999999999994? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Ist Gleitkomma-Mathematik kaputt? 28 answersRundum merkwürdig - was ist das Besondere an "100"? 2 Antworten

Wie ich das verstehe, können einige Zahlen nicht exakt in Binärdaten dargestellt werden, weshalb Gleitkomma-Arithmetik manchmal zu unerwarteten Ergebnissen führt. wie 4,35 * 100 = 434,99999999999994. Ähnliches passiert mit 1/3 in Dezimal.

Das macht Sinn, aber das wirft eine andere Frage auf. Scheint, dass in der Binärdatei sowohl 4.35 als auch 435 mit Genauigkeit dargestellt werden können. Dann macht es für mich keinen Sinn mehr. Warum ergibt 4,35 * 100 den Wert 434,99999999999994? 435 und 4.35 haben eine exakte Darstellung in der Doppeltypdynamik:

double number1 = 4.35;
double number2 = 435;
double number3 = 100;
System.out.println(number1); // 4.35
System.out.println(number2); // 435.0
System.out.println(number3); // 100.0
// So far so good. Everything ok. 

System.out.println(number1 * number3); // 434.99999999999994 !!!
// But 4.35 * 100 evaluates to 434.99999999999994

Warum

Bearbeiten: Diese Frage wurde als doppelt markiert und ist es nicht. Wie Sie in der akzeptierten Antwort sehen können, bestand meine Verwirrung in Bezug auf die Diskrepanz zwischen dem tatsächlichen Wert und dem gedruckten Wert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage