benjiman Posté 17 Octobre 2008 Posté 17 Octobre 2008 Bonjour à toutes et à tous ! Si je m'adresse à vos vous aujourd'hui, c'est que je sais que Webmaster Hub regorge de Webmasters professionnels et aptes à répondre à ma question ... Alors... je vous remercie de votre lecture et de vos futurs réponses. Mon problème est le suivant : Recemment, je suis passé à php5 et là, j'ai eu un énorme problème : Mes calculs arrivent au format scientifique dès qu'elles le peuvent ! Voici un exemple : $t=12976000000;$t3=($t*(2/3));$t2=($t/(3/2));#Affiche : T3=8650666666.6666660308837891#Affiche : T2=8650666666.6666660308837891 Si le nombre de départ change et revient avec beaucoup plus de 0, ca donne : $t=12900000000;$t3=($t*(2/3));$t2=($t/(3/2));#Affiche : T3=8.6E+9#Affiche : T2=8.6E+9 Le problème, c'est que ça me fait ça sur TOUT mon code ... soit environ 1 200 scripts ! Avez-vous une solution pour modifier ca directement dans les fichiers de configurations ? (je ne me vois pas appliquer une fonction sur les 1200 scripts et sur tous les calculs du site : c'est un site de calculs financiers). Je vous remercie par avance.
TheRec Posté 17 Octobre 2008 Posté 17 Octobre 2008 Bonjour, Tu peux régler la précision des nombre à virgule flottante dans ton php.ini ou à l'exécution (ini_get / ini_set ou même dans un fichier .htaccess avec la directive php_value si tu es sous Apache). Bonne continuation.
benjiman Posté 17 Octobre 2008 Auteur Posté 17 Octobre 2008 Merci pour cette réponse très rapide ! Je ne m'étais pas tromper d'adresse ! Toujours aussi bon webmaster Hub ! En revanche, la solution données va fonctionner pour les nombres telles que 12901234567 etc.... mais si je fait : ini_set('precision',50); (pour tester) Je retrouve bien : 12900000000/(3/2)=8.6E+9. En tout cas, merci beaucoup pour cette réponse rapide !
benjiman Posté 17 Octobre 2008 Auteur Posté 17 Octobre 2008 Quand je lis mon dernier message, il peut pet-être porter à confusion, mais je voulais bien evidemment dire que le problème est malheureusement toujours présent Si quelqu'un avait la solution, ca serait vraiment encourageant
TheRec Posté 17 Octobre 2008 Posté 17 Octobre 2008 Effectivement, cela corrige uniquement la précision du calcul et non de l'affichage... je ne vois pas vraiment d'autre solution que number_format ou l'utilisation de printf / sprintf. Je vais encore chercher cet après-midi lorsque j'aurais un moment. Désolé pour cette fausse piste **EDIT** : Non désolé... je ne vois pas d'autre solution actuellement... le problème vient du fait que tu convertis ton float ou ton integer, de manière transparente, en chaîne de charactères (lorsque tu fais un echo ou un print en l'occurrence), et le comportement par défaut de PHP est de convertir en notation scientifique certains nombres qui sont difficilement (ou plutôt peu pratiquement) représentables. Pour modifier ce comportement par défaut il semble être nécessaire d'utiliser une fonction de mise en forme des nombres (comme celle citées précédemment).
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant