Vous n'êtes pas connecté.


Depuis Firefox (parce qu'il le permet), entrez cette URL :
javascript:alert(1.2 - 1.1)
et observez le résultat que javascript retourne.
Voici quelques autres calculs effectués :
1 - 0.9 = 0.09999999999999998
0.9 - 0.8 = 0.09999999999999998
0.8 - 0.7 = 0.10000000000000009
0.7 - 0.6 = 0.09999999999999998
0.6 - 0.5 = 0.09999999999999998
0.5 - 0.4 = 0.09999999999999998
0.4 - 0.3 = 0.10000000000000003
0.3 - 0.2 = 0.09999999999999998
0.2 - 0.1 = 0.1
A noter qu'en MySQL, le pb se pose aussi, mais sur des calculs différents.
Il me semble qu'en PHP aussi, et il semblerait qu'en C ça ne soit pas le cas (bien qu'on ne puisse pas savoir puisque MySQL agit différemment mais foire aussi).
Quelqu'un a-t-il une explication à cela ?
TOP Hors ligne








Et si tu fais le calcul en posant une variable pour chaque valeur en typant ( pour PHP il y a pas de typage, C je crois ( ce qui fait que le problème est pt évité ) et MySQL je crois que c'est typé
Enfin le problème vient pt du typage ^^
TOP Hors ligne









Ah c'est donc ça 
En effet, en C(++) pas d'erreur et pourtant je n'ai pas typé les opérandes !
$ cat >test.c
#include <iostream>
int main()
{
double x = 1.2 - 1.1;
std::cout << x << std::endl;
}
$ g++ test.c
$ ./a.out
0.1TOP Hors ligne


xeter a écrit:
Et si tu fais le calcul en posant une variable pour chaque valeur en typant ( pour PHP il y a pas de typage, C je crois ( ce qui fait que le problème est pt évité ) et MySQL je crois que c'est typé
Enfin le problème vient pt du typage ^^
Et pourtant :
javascript:t1 = new Number(1.1); t2 = new Number(1.2); alert(t2 - t1);
n'y change rien (toujours 0.09999999999999987)... le typage ne serait donc pas en cause.
TOP Hors ligne