#include<stdio.h>
int main()
{
float a,b;
a=4.375;
b=4.385;
if(a==4.375)
printf("YES\n");
else
printf("NO\n");
if(b==4.385)
printf("YES\n");
else
printf("NO\n");
return 0;
}
Antwort von diesem Code:Vergleich einer Variablen vom Typ float den darin enthaltenen Wert
YES
NO
Ich dachte immer, wenn ich einen Schwimmer mit doppelten Wert vergleichen. es wird niemals dazu passen. es sei denn Wert ist reine Ganzzahl. aber hier schweben „a“ hat 4.375 genau drin ist, aber „b“ nicht
printf("%0.20f\n",a);
printf("%0.20f\n",b);
This prints :
4.37500000000000000000
4.38500022888183593750
but if i print
printf("%0.20f\n",4.475);
It prints 4.47499990463256835938
Wie wird dieser Rundungseffekt wird in einigen und in anderen nicht zeigen.
Kann jemand dies erklären. Wie sollte "WE" beurteilen, wenn der Wert in der float-Variablen mit dem darin enthaltenen übereinstimmt und wenn nicht?
0.375 = 3/8, seit 8 = 2^3, ist es kein Problem, es in einer binären Variablen zu speichern – gkovacs90
mögliche Duplikat von [seltsame Ausgabe im Vergleich von Float mit Float Literal] (http://stackoverflow.com/questions/1839422/merkwürdiger-Ausgabe-im-Vergleich-von-float-mit-float-literal) – devnull
nein nicht doppelt ..Ich fragte Unterschied zwischen beiden Situationen Herr :) –