C'est moi qui sait pas compter ou bien ? - PHP - Programmation
Marsh Posté le 13-10-2003 à 13:24:22
vous n'aimez pas tomber en panne, c'est tout a fait normal
voilà ce qu'il dit google lui ....
http://www.google.fr/search?q=192. [...] ogle&meta=
je te recommande de lui faire faire tes opérations arithmétiques
Marsh Posté le 13-10-2003 à 13:26:45
erreur de calcul en virgule flottante, cherche y'a pas mal de topics sur le même problème...
Marsh Posté le 13-10-2003 à 13:27:45
ca sent encore le pb de chiffre non representable en float ca
Marsh Posté le 13-10-2003 à 13:29:38
Bah je veux bien, mais si on peut pas faire 0.30-0.15 en php, ca va pas trop me plaire....
Marsh Posté le 13-10-2003 à 13:30:54
par contre:
echo 0.3-0.15;
ca marche bien et m'affiche bien 0.15
Marsh Posté le 13-10-2003 à 13:31:27
Spark a écrit : par contre: |
fo voir si il arrondi....
Marsh Posté le 13-10-2003 à 13:34:13
chrisbk a écrit : c'est pas un pb de php |
c koi s'truc
Marsh Posté le 13-10-2003 à 13:35:15
simogeo a écrit : |
un truc pour se la peter sur les forums
(format d'encodage des nombres flottant. pas le seul, mais le plus repandu (je crois ))
Marsh Posté le 13-10-2003 à 13:38:13
chrisbk a écrit : |
ah okay ... ben je connais po cett mairde ..
moi j'encode en IFT6820 .. cai plus sur et on se la pete plus avec un encodage plus underground
Marsh Posté le 13-10-2003 à 13:39:15
mais j'en ai rien a foutre bordel de ce qu'il fait derriere. Ca marche pas avec easyphp ni sur le site de mon hebergeur !!!
Moi je veux que ca me retourne le bon resultat
Je demande pas la lune. Si un script php est pas capable de donner le bon resultat pour une soustraction toute conne, bah poubelle !!
Marsh Posté le 13-10-2003 à 13:40:27
bon, j'v au taf
j'espere que vous trouverez la solution
A+
Marsh Posté le 13-10-2003 à 13:41:36
Spark a écrit : mais j'en ai rien a foutre bordel de ce qu'il fait derriere. Ca marche pas avec easyphp ni sur le site de mon hebergeur !!! |
et je viens de tester en local config apache 1.3.28/php 4.3.3 et cai pareil
Marsh Posté le 13-10-2003 à 13:46:23
Spark a écrit : mais j'en ai rien a foutre bordel de ce qu'il fait derriere. Ca marche pas avec easyphp ni sur le site de mon hebergeur !!! |
CAI LE CPU QUI TE FOURNI LE MAUVAIS RESULTAT TETE DE PIOCHE
Marsh Posté le 13-10-2003 à 13:47:09
chrisbk a écrit : |
Bah oui, c'est ça d'avoir un atlhon
Marsh Posté le 13-10-2003 à 13:48:05
ReplyMarsh Posté le 13-10-2003 à 14:21:29
Je veux bien que ce soit le cpu qui me donne le mauvais resultat, mais je savais pas que le php etait si bas niveau et si dependant du hardware ...
Sinon, sur mon poste au taf, ca me donne le bon resultat alors que c exactement la meme version de apache/mysql/php...
Une solution ?
Marsh Posté le 13-10-2003 à 14:52:59
ça te donne le résultat parceque l'affichage est arrondi/tronqué.... à priori
Marsh Posté le 13-10-2003 à 15:03:18
je viens de faire des essais en C, et ça donne ça en forçant 30 décimales après la virgule:
Double: 0.150000000000005680000000000000
Float: 0.150009155273437500000000000000
donc à priori ton php fait les calculs en double....
donc tu auras difficillement mieux au niveau calculatoire, fo juste que tu arrondisses à l'affichage....
Marsh Posté le 13-10-2003 à 21:48:56
Spark a écrit : Je veux bien que ce soit le cpu qui me donne le mauvais resultat, mais je savais pas que le php etait si bas niveau et si dependant du hardware ... |
Au mon dieux, le PHP, il utilises le CPU pour faire les calcul, mais alors que faire?
Aller, je te donnes une solution qui vaut ce qu'elle vaut : t'invente un language qui fait ses calculs sur une feuille de papier, comme ça t'auras plus ce problème.
Bon, sans rire, comment tu veux que le php sache que le résultat obtenu n'est qu'une approximation (approximation en base binaire qui est la seule conus par les ordis) du résultat attendus? Si tu fais plus confiance au matériel qui est utilisé alors il ne reste plus qu'une seule solution : faire tout les calcul par algorythme en décomposant tout en entier avant virgule et après virgule.
Je te racontes pas la différence de vitesse entre l'utilisation du processeur et cette méthode là pour des cas finalement pas très nombreux en proportion.
Marsh Posté le 13-10-2003 à 23:05:50
certes, mais je vois pas où est l'exploit de faire 0.1 + 0.7 = 0.8 et non 0.7999999 (comme dans la doc php...)
Sinon, j'ai rien touché à ma machine, à par la rebooter, et ca marche... je n'y comprends plus rien....
Marsh Posté le 13-10-2003 à 23:14:37
Pourquoi est ce que je ne serais pas étoné que des programmes tels qu'office ont modifié des paramètres de l'OS ?
Marsh Posté le 13-10-2003 à 23:39:05
Spark a écrit : certes, mais je vois pas où est l'exploit de faire 0.1 + 0.7 = 0.8 et non 0.7999999 (comme dans la doc php...) |
parceque l'affichage est arrondi, jamais tu lis ce qu'on t'écrit ?
Marsh Posté le 13-10-2003 à 23:43:35
Reply
Marsh Posté le 13-10-2003 à 13:18:54
voici le petit script suivant :
<?
$a=192.3;
$b=192.15;
$c=$a-$b;
echo $c;
?>
Qui m'affiche :
0.15000000000001
Délire nan ?
Qqn peux m'expliquer ce qui se passe ?