Ich verstehe völlig die Probleme mit Fließkommazahlen, aber ich habe ein sehr interessantes Verhalten gesehen, das ich nicht erklären kann.Ausweichen der Ungenauigkeit einer Gleitkommazahl
float x = 1028.25478;
long int y = 102825478;
float z = y/(float)100000.0;
printf("x = %f ", x);
printf("z = %f",z);
Der Ausgang ist:
x = 1028,254761 z = 1028,254780
Nun, wenn schwimmende Zahlen, die bestimmten Zufallswert darzustellen fehlgeschlagen (1028,25478), wenn ich das variable x zugewiesen . Warum ist es bei Variablen z nicht dasselbe?
P.S. Ich benutze pellesC IDE, um den Code zu testen (C11 Compiler).
Ihr Code [druckt das gleiche für mich] (https://ideone.com/9zyYyF). – dasblinkenlight
Versuchen Sie, einige weitere Dezimalstellen zu drucken, z. '"% .10f "'. –
Dies ist nicht das Duplikat. Ich denke, es gibt mehrere tatsächliche Duplikate, aber sie sind schwer zu finden. Grundsätzlich führt der Compiler im zweiten Fall Mathematik als "double" aus. – dasblinkenlight