Limiter le nombre de decimales

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 159 fois - Téléchargée 35 fois

Contenu du snippet

Ceci est plus une astuce utile qu'un code...
En effet, parfois a l'affichage on se retrouve avec des chiffres ayants des 10aines de decimales: 1.15488785445745878
Ce n'est pas tres propre, et dans ce cas, on est tenté de faire un Math.round() mais parfois, une version arrondi ne convient pas.
Il faut alors limiter le nombre de decimales.

Flash ne possede pas de fonctions pour ça, alors il faut en creer une. Rien de complexe.
Il suffit de reperer le '.' puis de reduire le nombre de chiffres des decimales via une conversion en String, puis un simple substr().
on reassemble ensuite le chiffre que l'on converti en Number dans la foulée, et voila!

Source / Exemple :


function limitDecimal(num:Number, limit:Number):Number {
	var pointIndex:Number = num.toString().indexOf(".", 0);
	if (pointIndex == -1) {
		return num;
	} else {
		var number:String = num.toString().substring(0, pointIndex);
		var decimals:String = num.toString().substring(pointIndex+1, num.toString().length);
		var newDecimals:String = decimals.substr(0, limit);
		return Number(number+"."+newDecimals);
	}
}

et puisque top30 insiste, voici une solution plus simple et plus courte (mais lui au moins il dors la nuit!):
function FloatLength ( val :Number, length :Number) :Number {
  var tmp:Array = String(val).split ('.') ;
  if ( tmp[1] ) tmp[1] = tmp[1].substring (0, length) ;trace (length);
    return Number (tmp.join('.')) ;
  }
}

alors on dit merci top30! bonne nuit BlackWizzard!

Conclusion :


Rien de spectaculaire, juste une astuce...

A voir également

Ajouter un commentaire Commentaires
Messages postés
5
Date d'inscription
lundi 24 janvier 2005
Statut
Membre
Dernière intervention
29 février 2008

Cinq ans après, cette ptite fonction trouve toujours preneur pour les allergiques aux maths comme moi :D
Merci à vous ^^
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010

Mème bien meilleur... Puisqu'elle limite ET arrondi !

On peut même limiter le calcul comme suit...

function getLimitFloatLength ( val :Number, length :Number ) :Number {
var pow :Number = Math.pow ( 10, length) ;
return Math.round ( val * pow ) / pow ;
}

Je crois que grâce `WhiteMagus.. Ta fonction est devenu parfaite...

Je prends !
Messages postés
1258
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
ha ouai, pas con :)
Messages postés
764
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
5 février 2010

Je n'ai pas vraiment compris ce que vous voulez faire.
Mais il y a un moyen simple d'arrondir un nombre à quelques chiffres après la virgule.
Grâce à Math.pow :

// on arrondi n à d chiffre après la virgule
arrondi = function(n, d) {
return Math.round( n * Math.pow(10, d)) / Math.pow(10, d);
};

trace ("arrondi de 6.55957 à 2 chiffres après la virgule : " + arrondi(6.55957, 2));

Je ne sais pas ce que vous voulez faire mais je trouve que c'est une méthode qui serait sympa de connaître.
@+
Messages postés
1258
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2
courrage... retours à la maison lundi...
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.