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 :

problème de syntaxe avec ROUND


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut problème de syntaxe avec ROUND
    bonjour,

    débutant en bash, je bute sur un problème de syntaxe (je pense en tout cas) avec round.

    je veux arrondir un nombre réel à deux chiffres après la virgule. mon nombre réel est stocké dans un tableau.
    j'ai essayé avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=round(10^2*${tab[0]})/10^2
    et d'autres variations (plus ou moins de parenthèses et de $). mais sans succès...

    un coup de pouce serait le bienvenu.
    seb

  2. #2
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Je ne sais pas quel est le but exact, mais est-ce que printf ne pourrait pas convenir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ echo $test
    3.95435467
    $ printf -v new_test "%.2f" $test
    $ echo $new_test
    3.95
    Edit:
    printf "%.2f" $test
    affiche le contenu de $test comme un nombre flottant (f) avec une précision de 2 chiffres (%.2) (voir printf)
    printf -v <var_name> ...
    affecte le résultat du printf à la variable var_name

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Bonjour Alek-C,

    Non, malheureusement, ta solution ne me convient pas.
    Car ROUND arrondit à l'entier le plus proche (càd supérieur ou inférieur). Tandis qu'en passant par PRINTIF, je ne pourrai arrondir qu'à l'entier inférieur.
    Seb

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    C'est marrant, chez moi, printf arrondi "au plus proche"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ echo $test
    3.95435467
    $ printf "%.2f\n" $test
    3.95
    $ test=$(echo "$test + 0.005" | bc)
    $ echo $test
    3.95935467
    $ printf "%.2f\n" $test
    3.96
    Tu entends quoi par "arrondi à l'entier le plus proche" en parlant de nombres avec 2 chiffres derrière la virgule ?

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut

    autant pour moi... je n'avais pas essayé, pensant que l'on s'était mal compris et, après lecture du manuel de printf, j'avais cru comprendre que printf n'arrondissait pas au plus proche.

    en tout cas, ca marche. merci beaucoup!

    quand à l' "arrondi à l'entier le plus proche" en parlant de nombres avec 2 chiffres derrière la virgule: round arrondit à l'entier le plus proche. je voulais donc multiplier mon réel par 100, l'arrondir à l'entier le plus proche avec round, avant de diviser cet entier par 100. et ainsi obtenir un nombre à 2 chiffres après la virgule.

    encore merci
    seb

  6. #6
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    en général, on utilise "arrondir" ou "tronquer" selon l'un ou l'autre cas, et pour printf, on parle bien d'arrondi

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

Discussions similaires

  1. Problème de syntaxe avec fun
    Par sioul dans le forum Caml
    Réponses: 14
    Dernier message: 21/02/2007, 17h33
  2. [VB-Excel]problème de syntaxe avec Array
    Par DomBourti dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/07/2006, 22h30
  3. Problème de syntaxe avec des nombres
    Par baleiney dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2006, 11h48
  4. Problème de syntaxe avec le composant TCppWebBrowser
    Par Ptite Développeuse dans le forum C++Builder
    Réponses: 10
    Dernier message: 19/04/2006, 16h48
  5. problème de syntaxe avec champ date
    Par mussara dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 03/02/2006, 17h19

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