Cast ou précision des float différents sous linux et windows ??!
J'ai un petit problème après une compilation d'un prog écrit sous linux que je voulais test sous windows.
Voilà le même code me donne pas le même résultat selon l'O.S 8O
Sous linux je compile dans le terminal avec gcc, via code:: sous windows, les options de compil sont les mêmes, le fichier .C est le même.
Voici la partie de code qui foire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
int zoomPixbuf (void **adressePixbuf,float zoomValeur)
{
float width;
GdkPixbuf *pixbuf;
pixbuf = (GdkPixbuf *)((gpointer)*adressePixbuf);
width = gdk_pixbuf_get_width(pixbuf)*zoomValeur;
printf("%f\n",width);
printf("%f\n",gdk_pixbuf_get_width(pixbuf)*zoomValeur);
printf("%f\n",(float)(gdk_pixbuf_get_width(pixbuf)*zoomValeur));
.....
} |
float zoomValeur = 100.0/gdk_pixbuf_get_width(pixbuf);
int gdk_pixbuf_get_width(pixbuf) = 66;
Sous linux :
100.000000
100.000000
100.000000
Sous Windows (Vista) : :mur:
100.000000
99.999999
99.999999
Du coup, quand je casterais en int sous windows les deux dernières versions, je me retrouve avec 99 et pas 100 comme valeur !
Pouvez vous éclairer ma lanterne SVP