|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 6 ![]() |
Bonjour,
J'ai un soucis en PHP. voila, je développe mon site de e-commerce. Tous les matins ma page PHP vérifie les données du fournisseur dans un CSV et les compare avec mes tarifs dans la base pour eventuellement les mettre à jour. Du CSV j'extrais 12.70 et de ma base MYSQL un decimal(20,6) de 11.180000 . La ou ça se corse c'est c'est quand je fait if ($prixa < $prixb) , ça devient le festival du n'importe quoi. J'ai lu qu'il était déconseillé de comparer des decimaux. J'ai trouvé un bout de code sur le web: Code :
|
||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
Citation:
Je suppose que là tu veux en fait faire $e = 100 non ?
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 6 ![]() |
Autant pour moi, j'ai oublié le x de prix.
Ben je sais pas trop ce qu'apporte le pow(10,10) j'ai recopier le code sur le web. En fait c'est une obscure fonction mathématique... J'ai fait un gettype sur mes deux variables, une est en string, et l'autre en integer ??? |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 6 ![]() |
Nada, j'ai mis ma variable recalcitrante en integer comme sa copine et c'est pareil:
11.780000: -1669149696 ; 11.78: 1835883008 integerinteger Mon prix issu de ma base = 11.780000 même avec number_format, j'arrive pas à virer les 0000. Le prix issue du fichier texte 11.78 et les caclcul issues de mon script récupéré qui sont pas les même. Je veux juste pouvoir comparer les 2 prix pour choisir si j'update ou pas le prix. Merci |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 815 ![]() |
Donne ton dernier script testé.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 6 ![]() |
Code :
|
||
|
|
01
|
|
|
#7 | |
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
Citation:
edit: ce qui peut expliquer un problème de dépassement de capacité et une conversion vers des float...
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
|
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
tu as raison de ne pas vouloir comparer des float entre eux. ce qu'on fait dans ce cas là c'est qu'on considère que deux floattant sont égaux lorsque la différence entre eux est négligeable.
Code :
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
||
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 6 ![]() |
Merci pour ta proposition de code. Il a l'air plus sur que le mien.
J'ai trouvé une solution qui semble fonctionner. j'ai passé les 2 variables en string (en tout bien tout honneur), puis number_format pour garder 2 décimales et la comparaison semble fonctionner sur 500 enregistrement de mon fichier de test. Reste le risque de comparer les décimales en PHP. Au pire j'aurais une erreur dans mes prix et risque de me retrouver avec une commande de 500 Imacs à 30€ pour une boulette de calcul de prix.... Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com