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.
Tags und Links c# casting precision floating-accuracy