[Perl]-Formatage de nombres
Résolu/Fermé
blux
Messages postés
25924
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
28 mars 2024
-
20 juin 2006 à 10:44
Sergei Perlvitch - 13 mars 2008 à 19:27
Sergei Perlvitch - 13 mars 2008 à 19:27
A voir également:
- [Perl]-Formatage de nombres
- Formatage exfat - Guide
- Code binaire des nombres - Guide
- Formatage pc - Guide
- Formatage usb - Guide
- Rémi et safia ont découvert le code binaire des nombres en cours d'informatique. ils l'utilisent pour se donner des rendez-vous secrets. ils ont décidé que : un message comporte 5 bits et donne le jour puis le moment les jours et les moments sont traduits par les nombres comme ci-dessous - Forum Programmation
7 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
20 juin 2006 à 11:28
20 juin 2006 à 11:28
Salut,
je ne suis pas sûr d'avoir compris ta demande.
Ton exemple c'est ce que tu veux obtenir?
Plutôt donne ce que tu as en entrée et ce que tu veux obtenir.Merci
lami20j
je ne suis pas sûr d'avoir compris ta demande.
Ton exemple c'est ce que tu veux obtenir?
Plutôt donne ce que tu as en entrée et ce que tu veux obtenir.Merci
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
20 juin 2006 à 11:34
20 juin 2006 à 11:34
Salut,
Extrait de : http://www.ftls.org/fr/initiation/perl/index9.shtml
;-))
Extrait de : http://www.ftls.org/fr/initiation/perl/index9.shtml
1. le format d'affichage Cette partie permet de connaître la façon dont vont être affichées les données (l'endroit, la manière, la taille ...) La taille est définie par le nombre de signes présents après le signe @ ou ^ @>>>> indiquera que la valeur sera affichée sur 4 caractères justifiés à droite @<<<< même chose mais justifié à gauche @|||| même chose mais centré @###.## champ numérique avec 2 chiffres après la virgule @* champ multiligne, on ne s'occupe pas de la taille du champ à afficher ^>>> affichera un champ sur plusieurs lignes de 3 caractères lignes vides incluses ~ ^>>> même chose mais sans les lignes vides ~~ ^>>> même chose mais répétera l'affichage jusqu'à trouver une ligne videJe connais pas Perl (mais c'est promis "lami20j" je m'y mets dès que je peux), donc j'espère que c'est ça qui se rapporte à ton cas.
;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
20 juin 2006 à 13:43
20 juin 2006 à 13:43
Re-
Bon, sachant que Perl est un dérivé de Awk, voilà comment que ça se passe sous Awk :
Bon, sachant que Perl est un dérivé de Awk, voilà comment que ça se passe sous Awk :
[jp@MDK tmpfs]$ cat fich.txt 12,458475 1,475962 100,0000 [jp@MDK tmpfs]$ while read i; do echo "$i" | awk 'END { printf " %6.2f %s\n",$1,"% de save full" }';done <fich.txt 12,46 % de save full 1,48 % de save full 100,00 % de save full [jp@MDK tmpfs]$Si ça peut t'aider... ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
20 juin 2006 à 13:46
20 juin 2006 à 13:46
Re,
Voilà une aproche.
Ou même
Voilà une aproche.
#! /usr/bin/perl # use warnings;use strict; while (<DATA>){ $_ = substr( " " x 20 . sprintf("%3.2f",$_), -6); # la seule chose qui reste à faire c'est de calculer # la longueur de la partie entière et prendre le maximum # pour obtenir exact ce que tu veux. # Ici j'ai mis 6 puisque je savais ce que tu veux print "$_ % de save full\n"; } __END__ 12.458475 1.475962 100.0000Le résultat
lami20j@debian:~/bin/my_deb_perl$ perl ccm_blux_format.pl 12.46 % de save full 1.48 % de save full 100.00 % de save full
Ou même
#! /usr/bin/perl # use warnings;use strict; while (<DATA>){ printf "%6.2f %% de save full\n"; } __END__ 12.458475 1.475962 100.0000lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
20 juin 2006 à 13:59
20 juin 2006 à 13:59
Re,
en fait 6 il faut le remplacer avec la longueur de la "chaine" la plus grande
Quand tu mets 3 alors l'alignement c'est par défaut au rapport de taille de chacun.
lami20j
P.S. Je n'ai pas pensé de début à ça (je parle de ma 2ème solution). Je suis parti avec l'idée de faire quelque chose compliqué.
J'avoue que j'ai regarder le script de jipicy ;)
- je n'ai pas vu la fôret à cause d'un arbre =))
Mais lui aussi il est parti pour quelque chose compliqué
perl formatage de nombres#2
en fait 6 il faut le remplacer avec la longueur de la "chaine" la plus grande
Quand tu mets 3 alors l'alignement c'est par défaut au rapport de taille de chacun.
lami20j
P.S. Je n'ai pas pensé de début à ça (je parle de ma 2ème solution). Je suis parti avec l'idée de faire quelque chose compliqué.
J'avoue que j'ai regarder le script de jipicy ;)
- je n'ai pas vu la fôret à cause d'un arbre =))
Mais lui aussi il est parti pour quelque chose compliqué
perl formatage de nombres#2
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
20 juin 2006 à 14:10
20 juin 2006 à 14:10
Salut lami20j,
Y'a un "os" dans ta dernière solution ;-)))
En fait avec "awk", l'expression "%6.2f" (4 + 2) signifie afficher un réel sur 6 positions, dont 2 pour la partie décimale, cadré à droite.
C'est la seule solution que j'ai trouvée pour avoir un alignement sur la virgule.
J'étais parti au début sur "%5.2f" (3 + 2), mais le résultat donné :
Donc j'ai rectifié le tir...
;-))
Y'a un "os" dans ta dernière solution ;-)))
En fait avec "awk", l'expression "%6.2f" (4 + 2) signifie afficher un réel sur 6 positions, dont 2 pour la partie décimale, cadré à droite.
C'est la seule solution que j'ai trouvée pour avoir un alignement sur la virgule.
J'étais parti au début sur "%5.2f" (3 + 2), mais le résultat donné :
12,46 % de save full 1,48 % de save full 100,00 % de save fullCe qui n'était pas bon.
Donc j'ai rectifié le tir...
;-))
blux
Messages postés
25924
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
28 mars 2024
3 281
20 juin 2006 à 14:38
20 juin 2006 à 14:38
Bon ben merci à tous...
J'ai pris le plus simple :
Et ça me va bien...:-)
J'ai pris le plus simple :
printf(" %6.2f %s",$MMINFO[$i][10],"% de savesets en level full");
Et ça me va bien...:-)
20 juin 2006 à 12:59
12.458475
1,475962
100,0000
Je ne veux conserver que 2 décimales, je veux cadrer sur la virgule avec des blancs de padding et je souhaite rajouter un peu de texte pour préciser l'unité...
Et en sortie, ce que j'ai indiqué au message 1.