[Résolu] Sprintf entier & décimal

Sprintf entier & décimal [Résolu] - Perl - Programmation

Marsh Posté le 15-02-2012 à 10:34:40    

Bonjour,
 
Voici l'idée,
Quand je requête dans ma base MySQL le chiffre d'affaire il me donne en valeur: 252.5678
Je peux aussi avoir pour une autre entité un chiffre d'affaire de 12356.6578
 
La mise en forme ne me plait pas, je veux des virgules et non des points et seulement 2 chiffres après la virgule.
Du coup je fais ça:
 

Code :
  1. $HOUSE= sprintf '%.2f', ($HOUSE);
  2. $HOUSE=~s/\./\,/g;


 
Cela fonctionne.
 
Le résultat est:
252,56
12356,65
 
Cependant à l'affichage le fait que les entiers ne soit pas alignés cela me décale mon \t
 
Je voudrais avoir:
00252,56
12356,65
 
Est-ce possible?
Comment faire?
 
 
Merci d'avance.


Message édité par Sethenssen le 17-02-2012 à 14:54:17
Reply

Marsh Posté le 15-02-2012 à 10:34:40   

Reply

Marsh Posté le 15-02-2012 à 14:56:34    

Essayer

$HOUSE= sprintf '%05.2f', ($HOUSE);
$HOUSE=~s/\./\,/g;

Reply

Marsh Posté le 15-02-2012 à 16:08:39    

Pas mieux.
Noter aussi que si on veut juste un alignement correct (mais pas de 0 initiaux), on peut utiliser Number::Format

Code :
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4.  
  5. use Number::Format;
  6.  
  7. my $fmat = new Number::Format(-thousands_sep   => '',
  8.                              -decimal_point   => ',');
  9.  
  10. print $fmat->format_picture(252.5678, '#####,##'), "\n";
  11. print $fmat->format_picture(12356.6578, '#####,##'), "\n";


C:\Perl>perl fnum.pl
   252,57
 12356,66


Noter aussi que ça rajoute un blanc initial (le module attend un nom d'unité (ici vide) et met un blanc après avant de mettre le nombre formaté et arrondi).
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 15-02-2012 à 18:09:29    

Merci, cela fonctionne avec

Code :
  1. $HOUSE= sprintf '%8.2f', ($HOUSE);


 
En revanche Gilou je n'ai pus tester ta solution car je n'ai pas ce module sur la machine.
Impossible pour moi de faire installer de nouveau module Perl à court terme. :(
 
Merci d'avoir pris le temps de répondre à ma demande.


Message édité par Sethenssen le 15-02-2012 à 18:09:56
Reply

Sujets relatifs:

Leave a Replay

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