IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

chiffre après la virgule


Sujet :

Shell et commandes GNU

  1. #1
    Membre très actif
    Homme Profil pro
    Lille
    Inscrit en
    Février 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lille
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2011
    Messages : 154
    Par défaut chiffre après la virgule
    Bonjour
    Qu'elle est la commande pour limiter a deux chiffres après la virgule ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     let "io_wbsfinal = io_wbstemp / 5"
    let "io_rbsfinal = io_rbstemp / 5"
     
    echo "$io_wbsfinal|'DiskWriteBPS'=$io_wbsfinal 'DiskReadBPS'=$io_rbsfinal"
    j'effectue les deux opération avec let et je fais un écho du résultat mais j'aimerai avoir seulement deux chiffres après la virgule svp

    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Bonjour,

    le shell ne gère pas les décimales, il faut en passer par bc :
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var=$(bc -l <<<"scale=2; 3 / 5")
    echo "$var"
    .60
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre très actif
    Homme Profil pro
    Lille
    Inscrit en
    Février 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lille
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2011
    Messages : 154
    Par défaut
    je suis désolé mais je ne comprends pas ton programme

    moi j'ai une valeur du style 27.293838473

    et j'aimerais avoir genre 27.29

  4. #4
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Un peu tiré par les cheveux mais bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var="27.293838473"
    printf -v var "%.2f" ${var/./,}
    var aura comme valeur 27,29

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    la valeur de quelle variable ?
    peu importe, le shell ne gère pas le calcul des décimales.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre très actif
    Homme Profil pro
    Lille
    Inscrit en
    Février 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lille
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2011
    Messages : 154
    Par défaut
    la méthode de fruit ne marche pas.

    Moi j'ai une valeur que je récupère avec un snmpget donc cette valeur est du style 65.3938839, ensuite je l’affiche avec un echo mais j'aimerai l'afficher sous forme de 65.39

  7. #7
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Comment ça, ça marche pas ? Tu peux être plus précis ?

    Déjà il est écrit en quoi ton script ? Ce serait pas du sh ?

    Voilà qui devrait marcher, même en sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > var=65.3938839
    > printf -v var "%.2f" ${var%.*},${var#*.}
    > echo $var
    65,39
    >

  8. #8
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    si c'est juste pour l'affichage il suffit de couper (méthode portable à tous shell unix)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ~:$ p=26.666666
    ~:$ echo $var | sed "s/\(.*\...\).*/\1"
    26.66
    ~:$ p=123.123
    ~:$ echo $var | sed "s/\(.*\...\).*/\1"
    123.12
    ~:$
    en clair ça fait
    echo $var | substitue tout ce qui est (n caractères.au + de 2 autres) par la même chose - tout ce qui dépasse.

    tu peux pousser le vice jusqu'à tester que ce soient bien des chiffres !
    en remplaçant les point par

  9. #9
    Membre très actif
    Homme Profil pro
    Lille
    Inscrit en
    Février 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lille
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2011
    Messages : 154
    Par défaut
    oui c'est du shell FRUiT vu que je suis dans la session shell...

  10. #10
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Bah excuse moi du peu mais y'en a plusieurs des shells, et qui ont tous leur syntaxe particulière... bash, ksh, ou sh pour ne citer que les plus célèbres...

    C'est le genre de précision qu'on attend d'un gars qui a un problème. Sans quoi l'aider c'est un peu peine perdue.

  11. #11
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par fbb53 Voir le message
    oui c'est du shell FRUiT vu que je suis dans la session shell...
    ce que FRUiT voulait dire c'est QUEL shell (tcsh, pdksh, bash, sh etc...)


    j'en profite pour ajouter la solution finale très portable : (fonctionne sur bash/ksh/sh sous *BSD, Solaris, AIX, Tru64 et HPUX) le reste je sais pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $var | sed "s/\([0-9]*\.[0-9][0-9]\).*/\1/"
    si il s'agit de faire des calculs avec... par contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "$var2 $var1 2k * pq" | dc
    pour une multiplication et bien sur c'est 2k qui défini 2 decimal 3k 3 et ainsi de suite...

  12. #12
    Membre très actif
    Homme Profil pro
    Lille
    Inscrit en
    Février 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lille
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2011
    Messages : 154
    Par défaut
    Merci de vos réponses

  13. #13
    Membre expérimenté Avatar de FRUiT
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 83
    Par défaut
    Citation Envoyé par FRUiT Voir le message
    Voilà qui devrait marcher, même en sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > var=65.3938839
    > printf -v var "%.2f" ${var%.*},${var#*.}
    > echo $var
    65,39
    >
    Juste un petit message pour d'éventuels lecteurs, je viens de me rendre compte que ceci ne marchera pas non plus en sh, car l'option -v de printf n'est présente que dans le builtin bash printf...

    En revanche /usr/bin/printf, (ou le builtin sh s'il y en a un ?) semble gérer le « . » plutôt que la « , » (c'est probablement une question de locale)

    En pur sh cela donnera donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > var=65.3938839
    > var=$(printf "%.2f" $var)
    > echo $var
    65.39
    >

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 08h36
  2. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28
  3. Chiffres après la virgule figés
    Par bondjames dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/03/2004, 23h09
  4. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04
  5. Nb de chiffres après la virgule ?
    Par Thcan dans le forum C
    Réponses: 10
    Dernier message: 17/09/2003, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo