[perl] limiter le nombre de chiffre d'un float ?

limiter le nombre de chiffre d'un float ? [perl] - Perl - Programmation

Marsh Posté le 18-04-2003 à 12:19:37    

Voila, j'aurai besoin de savoir comment faire pour transformer un float de 50 chiffres apres la virgule en un float de 2 chiffres apres la virgule.
Merci

Reply

Marsh Posté le 18-04-2003 à 12:19:37   

Reply

Marsh Posté le 18-04-2003 à 12:29:39    

darkpotpot a écrit :

Voila, j'aurai besoin de savoir comment faire pour transformer un float de 50 chiffres apres la virgule en un float de 2 chiffres apres la virgule.
Merci

Code :
  1. my $Nombre = 5.22232325656566;
  2. $Nombre = sprintf("%0.2f", $Nombre);


Message édité par Aricoh le 18-04-2003 à 12:30:05
Reply

Marsh Posté le 18-04-2003 à 12:31:13    

Merci beaucoup, ca faisait un bon bout de temps que je cherchai

Reply

Marsh Posté le 18-04-2003 à 12:31:51    

darkpotpot a écrit :

Merci beaucoup, ca faisait un bon bout de temps que je cherchai

perlfunc est ton ami :D

Reply

Marsh Posté le 18-04-2003 à 12:33:32    

oups, petite précision en passant : sprintf ne gère pas l'arrondi après la virgule
 
ainsi, 5.299999999999 deviendra 5.29 et non 5.30
 
tout dépend de ce que tu voulais avoir à l'arrivée

Reply

Marsh Posté le 20-04-2003 à 12:17:10    

autre solution, parfois plus rapide (mais pas toujours): utiliser int:
 
2 chiffres apres la virgule:
$n = int(100*$n)/100
 
et si tu veut que ca arrondisse au superieur:
$n = int(100*$n + 0.5)/100
 
apres tu peux mettre ca dans une fonction:

Code :
  1. sub arrondi(
  2.     my $n = shift;
  3.     my $precision = shift;
  4.     return int((10**$precision)*$n + 0.5) / (10**$precision);
  5. }
  6. arrondi(0.123456789, 2); # -> 0.12

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed