ARRONDIR 2 chiffres après la virgule (AS2) [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
27 octobre 2011
-
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
-
Bonjour,

J'ai essayé plein d'astuce je n'arrive pas à arrondir mes décimales.

J'explique :

j'ai un quizz avec différents chapitres :

Ma variable "scoretd1" me compte les points du chapitre 1
Ma variable "scoretd2" me compte les points du chapitre 2
Ma variable "scoretd2" me compte les points du chapitre 3

Puis dans mon dernier frame, j'ai le total de mes résultats :

Chapitre 1 vous avez : "result1pourc" % de réponses justes

"result1pourc" est une variable en texte dynamique dans un clip sprite44 resultat1
Dans ce sprite voici le code mis pour le calcul :

onClipEvent (enterFrame){
if (scorech1 == NaN)
{
(result1pourc == 0)
}
else
(result1pourc = (_level0.scorech1.scorech1*100)/7)


}

Cela fonctionne très bien mais il me donne un nombre avec 7 chiffres voir plus après la virgule et moi je n'en désire que 2.

Bien entendu j'ai essayé math.round sans succès et plein d'autres mais rien de fonctionne, car tout ce qu'il y a sur le net, il faut indiquer le nombre, alors que moi le nombre je ne le connais pas c'est une variable.

Merci pour votre aide.

6 réponses

Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
Tu peux surtout éviter de dire "variable = variable" et mettre directement ta variable principale dans l'équation.

Peg'
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
9
bonjour,

Il faut jouer avec la virgule du chiffre :

var nb:Number = 12.7891234567812; //nombre à arrondir
var arr:int = 3; //nombre de chiffre voulu après la virgule
trace (Math.floor(nb*(Math.pow(10,arr)))/Math.pow(10,arr)); //renvoie 12.789


Si tu désires que le dernier chiffre soit arrondis à la dizaine supérieure si besoin (12.79 au lieu de 12.78) utilises Math.round au lieu de Math.floor.
Et si tu désires que le dernier chiffre soit toujours à la dizaine supérieure, utilise Math.ceil.

Je pense que tu es blindé avec ça.

Peg'
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
Bonjour,

je pense que ton probleme est tout autre,..., tu ne sais pas chercher sur internet

j'ai fait le test et la premier réponse trouvée sur google est la bonne.

Du coup comme tu sembles peu doué je te donne la réponse, sinon tu rique d'y passer la semaine.

var nombre:Number=50.78695412
resultat=(Math.round(nombre*100))/100;
trace(resultat);

Cordialement
Messages postés
6
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
27 octobre 2011

Re,

Attention je ne connais pas le nombre, car c'est un quizz, donc sur 20 questions je fais une moyenne, mais celle ci est toujours différentes.

Alors est ce que je pourrais faire ceci :

var nombre:Number=result1pourc
resultat=(Math.round(nombre*100))/100;
trace(resultat)
Messages postés
6
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
27 octobre 2011

Ça marche !!!!!

En fait c'était tous simple, j'oubliais à chaque fois de modifier nombre par ma variable

onClipEvent (enterFrame){
if (scorech1 == NaN)
{
(result1pourc == 0)
}
else
result1pourc=((_level0.scorech1.scorech1*100)/7)
result1pourc=(Math.round(result1pourc*100))/100;

}

Merci à vous deux. grâce à vous mon Elearning comptabilité est terminé.

A+
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
je crois que tu as pas compris ce que te dit pegase

onClipEvent (enterFrame){ 
result1pourc=(scorech1==NaN)?0:(Math.round(((_level0.scorech1.scorech1*100)/7)*100))/100; 
} 


Pourquoi faire compliqué quand ca peut etre simple?