#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;
}
risposta di questo codice:Confronto di una variabile float al suo valore contenuto
YES
NO
Ho sempre pensato che se mi confronto con un float valore doppio. non si abbinerà mai ad esso. a meno che il valore sia un numero intero puro. ma qui galleggiare "a" ha 4.375 è esatto, ma "b" non
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
Come è questo effetto arrotondamento sta mostrando in alcuni e non in altri.
Qualcuno può spiegarlo. come dovrebbe "NOI" giudicare quando il valore della variabile float corrisponderà a quello in esso contenuto e quando non lo è?
0,375 = 3/8, Poiché 8 = 2^3, non è un problema archiviarlo in una variabile binaria – gkovacs90
possibile duplicato di [output strano in confronto di float con float letterale] (http://stackoverflow.com/questions/1839422/strange-output-in-comparison-of-float-with-float-letteral) – devnull
no not duplicate ..ho chiesto la differenza tra le due situazioni signore :) –