Anche a me da 133 !Originariamente inviato da gulpgiulia
Ciao a tutti!
Vi sottopongo il seguente esempio:
L'output e' il seguente:codice:#include <stdio.h> #include <stdlib.h> double Xmax,Xmin,Xn,grid; int nX; main() { Xmax = -20.100000; printf("Xmax = %lf\n",Xmax); Xmin = -46.900000; printf("Xmin = %lf\n",Xmin); grid = 0.2; printf("grid = %lf\n",grid); Xn=(Xmax-Xmin)/grid; printf("Xn = %lf\n",Xn); nX=(int)Xn; printf("nX = %d\n",nX); return 0; }
Xmax = -20.100000
Xmin = -46.900000
grid = 0.200000
Xn = 134.000000
nX = 133
PERCHE'???
Ovviamente io vorrei che, dopo aver eseguito il casting (int), nX sia un intero, con valore 134 ...
Ma se provi a cambiare la riga :
nX=(int)Xn;
in :
nX=(int)(Xn+0.000001);
Il risultato da float ad intero dipende da come il compilatore arrotonda il valore float.
Questi floating point..., a volte fluttuano un pò troppo !![]()