Casting-Ergebnisse der Float-Multiplikation führen zu unterschiedlichen Ergebnissen, wenn der Float zum ersten Mal in einer Variablen gespeichert wird? [Duplikat]

8

Der Code hier ist einfach, aber ich verstehe die Ergebnisse nicht:

%Vor%

Warum ist firstInt 68, aber secondInt ist 69?

    
Foggzie 08.08.2016, 22:56
quelle

1 Antwort

1

Es sieht so aus, als ob der Compiler den Wert von

herausgefunden hat %Vor%

Ausdruck mit Doppelmathematik, und optimiert die Berechnung. Dies ist nicht erlaubt, wenn Zwischenergebnisse in einer float-Variablen gespeichert werden.

Da .69 keine exakte Darstellung in float oder double hat, "landen" die beiden Darstellungen auf verschiedenen Seiten eines int: double etwas darüber, während float etwas unter dem tatsächlichen Wert von .69 liegt.

    
dasblinkenlight 08.08.2016 23:07
quelle