C'est moi qui sait pas compter ou bien ?

C'est moi qui sait pas compter ou bien ? - PHP - Programmation

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 ?

Reply

Marsh Posté le 13-10-2003 à 13:18:54   

Reply

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 [:cupra]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

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...

Reply

Marsh Posté le 13-10-2003 à 13:27:02    

je vais y penser :D :D
Bon sinon, c'est quoi ce bordel ?

Reply

Marsh Posté le 13-10-2003 à 13:27:45    

ca sent encore le pb de chiffre non representable en float ca

Reply

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....

Reply

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

Reply

Marsh Posté le 13-10-2003 à 13:31:00    

c'est pas un pb de php :O
c'est un probleme d'IEEE [:aloy]

Reply

Marsh Posté le 13-10-2003 à 13:31:27    

Spark a écrit :

par contre:
echo 0.3-0.15;  
ca marche bien et m'affiche bien 0.15


 
fo voir si il arrondi....

Reply

Marsh Posté le 13-10-2003 à 13:31:35    

bin tu fais un arrondi à l'affichage....

Reply

Marsh Posté le 13-10-2003 à 13:31:35   

Reply

Marsh Posté le 13-10-2003 à 13:34:13    

chrisbk a écrit :

c'est pas un pb de php :O
c'est un probleme d'IEEE [:aloy]
 


c koi s'truc [:tilleul]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-10-2003 à 13:35:15    

simogeo a écrit :


c koi s'truc [:tilleul]


 
un truc pour se la peter sur les forums :sol:
 
(format d'encodage des nombres flottant. pas le seul, mais le plus repandu (je crois :O))

Reply

Marsh Posté le 13-10-2003 à 13:38:13    

chrisbk a écrit :


 
un truc pour se la peter sur les forums :sol:
 
(format d'encodage des nombres flottant. pas le seul, mais le plus repandu (je crois :O))


ah okay ... ben je connais po cett mairde ..  
 
moi j'encode en IFT6820 .. cai plus sur  :whistle:  et on se la pete plus avec un encodage plus underground :sol:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-10-2003 à 13:39:15    

mais j'en ai rien a foutre bordel de ce qu'il fait derriere. :lol: Ca marche pas avec easyphp ni sur le site de mon hebergeur !!!
Moi je veux que ca me retourne le bon resultat :D
Je demande pas la lune. Si un script php est pas capable de donner le bon resultat pour une soustraction toute conne, bah poubelle !!

Reply

Marsh Posté le 13-10-2003 à 13:40:27    

bon, j'v au taf
j'espere que vous trouverez la solution
A+

Reply

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. :lol: 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 :/


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

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. :lol: Ca marche pas avec easyphp ni sur le site de mon hebergeur !!!
Moi je veux que ca me retourne le bon resultat :D
Je demande pas la lune. Si un script php est pas capable de donner le bon resultat pour une soustraction toute conne, bah poubelle !!
 


 
CAI LE CPU QUI TE FOURNI LE MAUVAIS RESULTAT TETE DE PIOCHE :O :O :O

Reply

Marsh Posté le 13-10-2003 à 13:47:09    

chrisbk a écrit :


CAI LE CPU QUI TE FOURNI LE MAUVAIS RESULTAT TETE DE PIOCHE :O :O :O


 
Bah oui, c'est ça d'avoir un atlhon [:spamafote]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 13-10-2003 à 13:48:05    

kadreg a écrit :


 
Bah oui, c'est ça d'avoir un atlhon [:spamafote]


 
On est pas sur hardware icyte [:ddr555]

Reply

Marsh 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 ... :o
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 ?

Reply

Marsh Posté le 13-10-2003 à 14:52:59    

ça te donne le résultat parceque l'affichage est arrondi/tronqué.... à priori

Reply

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....

Reply

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 ... :o
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 ?

Au mon dieux, le PHP, il utilises le CPU pour faire les calcul, [:armelanuel] mais alors que faire? [:axlrose]
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. :p
 
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. ;)

Reply

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....

Reply

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 ? :??:

Reply

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...)
Sinon, j'ai rien touché à ma machine, à par la rebooter, et ca marche... je n'y comprends plus rien....


 
parceque l'affichage est arrondi, jamais tu lis ce qu'on t'écrit ?


Message édité par bjone le 13-10-2003 à 23:39:17
Reply

Marsh Posté le 13-10-2003 à 23:43:35    

BJOne a écrit :


 
parceque l'affichage est arrondi, jamais tu lis ce qu'on t'écrit ?


 
c'est Mr dubois [:spamafote]

Reply

Marsh Posté le 13-10-2003 à 23:44:12    

chrisbk a écrit :


 
c'est Mr dubois [:spamafote]


:lol:

Reply

Marsh Posté le 13-10-2003 à 23:45:04    

tjs sur besac vieux bidule ? :O

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed