Was macht der Compiler? Das Ziel ist es, die Zahl nach dem Punkt als Ganzzahl zu erhalten. Ich habe es so gemacht:
float a = 0;
cin >> a;
int b = (a - (int)a)*10;
Mein Problem ist nun folgendes: Wenn ich zum Beispiel 3,2 eingebe, erhalte ich 2, was ich auch will. Es funktioniert auch mit .4, .5 und .7. Aber wenn ich z.B. 2.3 eingebe, erhalte ich 2. Für 2,7 erhalte ich 6 und so weiter. Aber wenn ich es ohne Variablen mache, zum Beispiel:
(2.3 - (int)2.3)*10;
Ich erhalte das richtige Ergebnis.
Ich konnte nicht herausfinden, was der Compiler macht. Ich dachte immer, wenn ich eine Fließkommazahl in eine Ganzzahl umwandle, dann schneidet er einfach an dem Punkt ab. Das tut der Compiler auch, wenn ich konstante Zahlen verwende. Wenn ich jedoch Variablen verwende, reduziert der Compiler einige von ihnen, aber nicht alle.