Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1450 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Résolu] Sprintf entier & décimal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Sprintf entier & décimal

n°2126613
Sethenssen
Posté le 15-02-2012 à 10:34:40  profilanswer
 

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
mood
Publicité
Posté le 15-02-2012 à 10:34:40  profilanswer
 

n°2126636
olivthill
Posté le 15-02-2012 à 14:56:34  profilanswer
 

Essayer

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

n°2126644
gilou
Modérateur
Modzilla
Posté le 15-02-2012 à 16:08:39  profilanswer
 

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é!  --
n°2126700
Sethenssen
Posté le 15-02-2012 à 18:09:29  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Résolu] Sprintf entier & décimal

 

Sujets relatifs
sprintf et justification à droiteEcrire un nombre avec un séparateur décimal locale
fonction split sur un entier[Résolu] Sprintf & Arrondi
Passer d'un entier à des bitshexa string vers decimal string
[RESOLU]Convertir un nombre entier en decimal si ce nombre est plus...Tester un entier vide (isEmpty, isNull)?
Comment savoir si dans un tab dechar il y a des entier et des reel ? 
Plus de sujets relatifs à : [Résolu] Sprintf entier & décimal


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR