Salut,
j'ai écris un script php que vous pouvez trouver ici :
http://kobold.myftp.org/math/ecriture_science.php
Le but est pour l'élève d'écrire des nombres du style 0,00012 en 1,2E-4
Le script compare la réponse de l'élève avec une réponse qu'il calcule lui même.
Mon problème est le suivant :
dès qu'un nombre est trop petit (typiquement 1E-5) ou trop grand (typiquement 1E10), l'affichage dans la page web de ce nombre est fait sous la forme scientifique. c'est à dire déjà sous la forme 1,2 E-4
Je voudrais donc forcer php à afficher les nombres dans un format décimales uniquement. (et acecssoirement avec une virgule et non pas un point .)
des idées ?
# yo
Posté par aedrin . Évalué à 2.
spécifier la virgule comme séparateur
http://www.nexen.net/docs/php/annotee/function.setlocale.php
utiliser printf avec %f comme formateur (qui utilise la locale)
http://www.nexen.net/docs/php/annotee/function.printf.php
[^] # Re: yo
Posté par Cyber Kobold (site web personnel) . Évalué à 1.
Mon foutu manuel n'est pas aussi précis que celui-ci ! ;)
Sinon, je vois que dans la local française, le séparateur des milliers n'est pas un espace mais un "rien". dommage non ?
On peut corriger ça ?
[^] # Re: yo
Posté par Cyber Kobold (site web personnel) . Évalué à 1.
printf ou sprintf ne me done pas le formatage que je veux. il y a un soucis avec le traitement des décimals.
j'ai donc utilisé ça :
$nombre_formate = number_format($nombre_alea, 2, ',', ' ');
c'est super bien mais ça m'oblige à spécifier un nombre de décimals, or je ne veux pas spécifier ce nombre.
comment faire ?
ou que dois-je utiliser à la place ?
[^] # Re: yo
Posté par aedrin . Évalué à 1.
[^] # Re: yo
Posté par Cyber Kobold (site web personnel) . Évalué à 1.
et d'ailleurs (bon j'ai testé beaucoup d'options cet après midi , je ne sais plus trop) %f, fait afficher en mode float, c'est à dire avec 5 ou 6 zéros après la virgule même s'ils sont inintéressants.
[^] # setlocale fait planter mon script
Posté par Cyber Kobold (site web personnel) . Évalué à 1.
setlocale(LC_ALL, 'fr_FR@euro') ;
et dans la foulée la fonction abs ()
s'et smis à faire n'importe quoi et à considérer que les nombres que je lui donnais étaient des entiers et non plus des nombres à virgules
ainsi tout les nombres compris entre -1 et 1 renvoyaient 0
abs (-0,00012) = 0
bon allez, hop j'ai viré la locale !
[^] # Re: setlocale fait planter mon script
Posté par aedrin . Évalué à 1.
[^] # Re: setlocale fait planter mon script
Posté par Cyber Kobold (site web personnel) . Évalué à 1.
le script génère un nombre décimal, et en prend la valeur absolu.
il n'y a aucune intervention de ma part sur ce nombre.
je génère un nombre aléatoire.
je le transmet via un formulaire. le script le récupère et prend sa valeur absolue.
et là.... c'est le drame.
Dès que j'enlève la variable setlocale, ça fonctionne de nouveau parfaitement.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.