Aller au contenu

Multiplication non scientifique ...


Sujets conseillés

Posté

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.

Posté

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 !

Posté

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

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...