Der folgende Code funktioniert:Datentyp Verwirrung in C
int main(void)
{
float f = get_float();
int i = round(f*100);
printf("%i\n", i);
}
Doch Fehler generiert, wenn Codierung auf diese Weise:
printf("%i\n", round(1.21*100));
Output sagt round(1.21*100)
float
ist. Also, warum dann
int i = round(f*100);
ist in Ordnung?
Wenn ein 'float' Wert auf' int' Werte zugeordnet ist, eine interne Umwandlung stattfindet. 'round()' gibt einen doppelten Wert, wenn also keine Konvertierung durchgeführt wird, bleibt der Wert doppelt. In diesem speziellen Fall 'printf ("% i \ n ", rund (1.21 * 100));' wird keine Konvertierung durchgeführt, daher ist '% f' erforderlich, um den Gleitkommawert zu drucken. – Sma