|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 52 ![]() |
Bonjour à tous,
Voilà le problème auquel je suis confronté : En php5, j'exécute la commande suivante : Sur un serveur, je reçois : alors que sur un autre, je reçois et je crois que ça engendre des effets de bord dans le reste de mon code. Sauriez-vous comment uniformiser la réponse, et quelle pourrait être la source du problème ? PS : le php.ini est identique sur les 2 serveurs D'avance, merci. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() |
j'ai peur de poser une question bête
pourqui tu n'entoures pas ton nombre de guillemets pour l'echo? (ça le transforme en chaine de caractères et donc plus de pb d'affichage) sinon ça ne doit pas venir de php mais du serveur lui même et de sa manière de gérer les calculs car 123456789123456789 = 1.23456789123456789E+17 (celui qui de donne un résultat bizarre doit juste avoir un nombre plus limité de nombre qui peut "memoriser" je ne connais le terme dsl, bref il ne supporte pas plus de 12 chiffres pour la mantise) l'effet de bord c'est donc peut être une approximation dans les calculs par la suite... |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 52 ![]() |
c'est en gérant un nombre, et non un string que je me suis aperçu du problème.
Et effectivement, je pense que ça vient d'un problème de config, mais lequel vu que les php.ini sont identiques. y a-t-il un module ou une extension spécifique à la gestion des calculs ? Et l'approximation des calculs entraine bien des problèmes derrière. |
|
|
00
|
|
|
#4 |
|
Membre actif
![]() |
si c'est php (ça me surprendrait un peu, mais j'avoue que les calculs avec de grands nombres c'est pas courant en php)
vu que les php.ini sont pareil. essaye d'utiliser phpinfo pour avoir les informations sur les modules installés (je me demande si ça ne se verrait pas d'ailleurs dans le php.ini, ça fait tellement longtemps que je n'y ai pas touché que j'ai peur de dire des bétises). et donc vu qu'au niveau php les serveurs sont pareils j'ai bien peur que ce soit la config du serveur en lui même et non pas de php qui gène.. |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 52 ![]() |
Oui, c'est effectivement ce que je pense, mais j'avoue que je ne sais pas de quel côté regarder
|
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2002 Messages : 85 ![]() |
Essaye déja de faire un phpinfo() sur les deux serveurs et regarde si la variable "precision" a la même valeur.
Sinon ça vient surement d'une limite du système ou de la machine. Est-ce que ce sont des OS différents ? Architecture différentes ? (32/64 bits...)
__________________
"Software is like sex, it's better when it's free" -- Linus Torvalds |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 52 ![]() |
hum, piste intéressante.
Après vérification, la variable precision (12 en l'ocuurence) est identique sur les 2 serveurs. Les OS sont effectivement différents : Debian Sarge et Gentoo. Quant à l'architecture, y'a t-il une commande pour en avoir le détail ? Cela voudrait-il dire qu'il faut recompiler PHP en omettant certains paramètres ? |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Analyste - Programmeur Inscription : mai 2006 Messages : 712 ![]() |
Lors des calculs ca a vraiment un incidence ?
Je pense que php comprend les puissances de 10 donc ne devrait pas poser de problème ca reste qu'un bug d'affichage non? |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() |
123456789123456789 = 1.23456789123456789E+17
or pour le serveur qui pose pb il affiche juste 1.23456789123+17 soit 12 (la précision) chiffres après la virgule il est donc possible que les chiffres suivants soient oubliés/négligés et 456.789 ce n'est pas forcément négligeable quand on enchaine les calculs. Xris pour savoir si c'est bien ça fait 2-3 calculs avec des grands nombres et tu compares le résultat avec - le vrai résultat - celui que tu aurais si tu ne gardes que 12 chiffres significatifs après la virgule si ça correspond au deuxième il y a bien un pb d'arrondi. ensuite si c'est bien ça, il faut voir si en modifiant la précision ça résoud ton pb (si les capacités (ou la config) du serveur le supportent...) |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 52 ![]() |
effectivement, en cascadant les calculs, les résultats sont incohérents, et il y a bien une erreur.
Je pense que cela vient d'un serveur dont le noyau a été compilé pour un support 64 bits (gentoo) alors que l'autre est en 32 bits (debian). Je continue de creuser ... |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : janvier 2005 Messages : 52 ![]() |
encore plus étrange :
me renvoie double (debian, 32 bits) et integer (gentoo, 64 bits). Je pense que mon problème vient également de là. Sauriez vous quelle est la cause de cette différence ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com