begin process at 2012 05 26 06:12:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > LIMITER LE NOMBRE DE DECIMALES

LIMITER LE NOMBRE DE DECIMALES


 Information sur la source

Note :
5,67 / 10 - par 3 personnes
5,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ActionScripts Niveau :Débutant Date de création :08/09/2004 Date de mise à jour :09/09/2004 21:26:57 Vu :8 608

Auteur : BlackWizzard

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


 Description

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

  • 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!
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...


 Historique

08 septembre 2004 15:30:21 :
Corection du bug: la fonction ne prenait pas les entiers.
09 septembre 2004 21:27:00 :

 Sources du même auteur

Source avec Zip Source avec une capture SPORE-LIKE DEMO
Source avec Zip Source avec une capture LINECHART / AREACHART : COMPOSANT AS2, SOURCE XML, STYLE PAR...
Source avec Zip COURS FLASH: COMMUNICATION FLASH/PHP
Source avec Zip 3D TEMPS REEL EN AS2
Source avec Zip Source avec une capture CLASS PIECHART: CODE ET COURS (8 PAGES FLASHPAPER/WORD)

 Sources de la même categorie

Source avec Zip Source avec une capture OUVRIR UNE ANIMATION EXTERNE DANS UN CLIP VIDE. par KcHeY
Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar

Commentaires et avis

Commentaire de top30 le 08/09/2004 15:05:25

J'aime bien l'idée... Mais ca marche pas avec les entiers !
Limite 12 renvoie 0.12 !

Essaie donc ca !

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('.')) ;
}

trace ( FloatLength ( 12.325566, 3 ) );
trace ( FloatLength ( 20, 3 ) );


Le if evite les NAN si la valeur à limiter est un entier !
[6/10] pour le bug non "penser"...

Split de String est une fonction bien plus qu'utile et peu utilisée...

Commentaire de BlackWizzard le 08/09/2004 15:24:49 administrateur CS

ouai, c'est une fonction que j'ai créé pour une de mes appli, et je l'ai mise de suite, et je me suis appercut seuleemnt ce matin que mon appli ne fonctionnait pas avec avec les 2entier...

correction:
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);
}
}

Commentaire de top30 le 08/09/2004 15:56:59

OOOHHH BW !
Reveil toi.. C'est pas ton style allongé les Fucntions

; )

Commentaire de top30 le 08/09/2004 16:36:45

Tiens la preuve que Spit est super utile :


// Retourne un nom de fichier comme : "monImage.jpg" sans l'extention
// Quelque soit la longueur de l'extention...
function QuitExtention ( str :String ) :String  {

return str.split('.')[0] ;
}

A plus... ; )

Commentaire de BlackWizzard le 08/09/2004 16:43:50 administrateur CS

ouai, bon, no comment ;)
suis fatigué en ce moment... et puis je passe plus de temps sur les macher financier que sur flash ces derniers jours... c'est d'ailleur pour un simulateur d'investissement que j'ai du coder cette fonction...
le code seras pas sur le site, ça interesse personne ce genre d'appli je pense...

Commentaire de matteo_2r le 10/09/2004 01:10:24


Math.floor(nombre);

Renvoie l'entier inférieur le plus proche.
Ex : 12,7584 => 12

Commentaire de BlackWizzard le 10/09/2004 01:15:32 administrateur CS

c'est pas le but... on vx conserver les decimal en les limitants, pas les supprimer.
Tu doit etre nouveau sur le site, car sinon tu nous connaitrais top30 et moi, et tu ne nous preciserai pas cette fonction Math.floor()...

Commentaire de top30 le 10/09/2004 10:19:01

EEHHH BW...
Sérieux, dors un peu, t arrives plus à écrire français !

= ))

Commentaire de BlackWizzard le 10/09/2004 16:15:45 administrateur CS

courrage... retours à la maison lundi...

Commentaire de WhiteMagus le 12/09/2004 01:12:22

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.
@+

Commentaire de BlackWizzard le 12/09/2004 01:14:13 administrateur CS

ha ouai, pas con :)

Commentaire de top30 le 13/09/2004 10:58:24

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 !

Commentaire de kyborash le 15/09/2009 19:15:35

Cinq ans après, cette ptite fonction trouve toujours preneur pour les allergiques aux maths comme moi :D
Merci à vous ^^

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales