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 :

afficher la partie decimale d'une operation arithmetique


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut afficher la partie decimale d'une operation arithmetique
    Salut tout le monde!
    comment peut-on afficher le resultat d'une operation arithmetique avec une virgule?la commande expr affiche seulement la partie entiere de l'operation et n'affiche pas la partie decimale.
    merci pour vous et cordialement!

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Salut.

    Bash ne gère pas comme ça les virgules flottantes, voici l'astuce :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    variable=$(echo "0.1" | bc) # pour affecter une valeur à virgule flottante
    variable=$(echo "$variable*2" | bc -l) # pour affecter le résultat d'un calcule avec des virgules flottantes
    Pour seulement afficher uniquement le résultat d'une opération :

    man bc pour en savoir plus ...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    Pour être exact, bash ne gère pas les nombres à virgule (l'astuce d'Idriss n'y fera rien); mais il faut effectivement, comme il le dit, faire appel à un programme externe :
    Code Bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var=0.1
    bc <<<"$var*2"
    .2
    # l'astuce d'Idriss
    var=$(echo "0.1" | bc)
    echo "$var*2" | bc -l
    .2
    # mais bash ne gère pas les nombres à virgule
    [ $var -gt 0 ] && echo "peu importe"
    bash: [: .1: integer expression expected
    # il faut faire appel à un programme externe
    [ $(bc <<<"$var > 0") ] && echo "$var > 0"
    .1 > 0
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    Merci les amis pour vos réponses!
    pour l'astuce d'Idriss,ca marche tres bien et ca repond à mon besoin actuel
    Mais désolé N_BaH je ne comprends pas très bien comment ca fonctionne la premiere commande de "&&" et ca sert a tester quoi exactement?

    Citation Envoyé par N_BaH Voir le message
    [ $(bc <<<"$var > 0") ] && echo "$var > 0"
    .1 > 0[/code]
    Pardon, mais j'ai besoin de plus d'éclaircissements
    Merci une autre fois!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 663
    Par défaut
    L'astuce d'Idriss n'en est pas vraiment une : elle ne fera pas en sorte que bash puisse évaluer des nombres à virgule.
    Elle montre simplement comment les manipuler.

    Citation Envoyé par vamos
    Mais désolé N_BaH je ne comprends pas très bien comment ca fonctionne la premiere commande de "&&" et ca sert a tester quoi exactement?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [ $(bc <<<"$var > 0") ] && echo "$var > 0"
    # est équivalent à
    test $(echo "$var > 0" | bc) && echo "$var est supérieur à 0"
    # ou encore, de façon un peu redondante
    #if [ $(echo "$var > 0" | bc) ] 
    if test $(echo "$var > 0" | bc)
    then echo "$var est supérieur à 0"
    fi
    C'est plus clair ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    C'est plus clair ?
    Oui N_BaH ,maintenant ca va mieux !
    merci pour tout

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

Discussions similaires

  1. Partie entier d'une nombre decimale
    Par Andry dans le forum SQL
    Réponses: 3
    Dernier message: 24/01/2008, 20h50
  2. Afficher un partie d'une valeur dans un champ
    Par curt dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/11/2007, 17h39
  3. Afficher certaines parties d'une image
    Par Seb33300 dans le forum Flash
    Réponses: 7
    Dernier message: 19/03/2007, 14h03
  4. Afficher une partie precise d'une page
    Par Invité dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 20/04/2006, 22h14
  5. Afficher la partie entiere d'une division
    Par ju360modena dans le forum ASP
    Réponses: 2
    Dernier message: 29/06/2005, 15h31

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