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 :

Arrondir un float à l'entier supérieur


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Points : 29
    Points
    29
    Par défaut Arrondir un float à l'entier supérieur
    Bonjour,

    J'aimerais savoir s'il y a une commande qui fait la conversion directe d'un float à l'entier sup (ou inf)?

    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 595
    Points : 19 477
    Points
    19 477
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ printf '%.0f\n' 3.5
    4
    ...
    ?

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 732
    Points : 31 056
    Points
    31 056
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ printf '%.0f\n' 3.5
    4
    ...
    ?
    Super funny. Mais je pense qu'il voulait parler d'une instruction permettant de "forcer" l'arrondi inf ou l'arrondi sup en passant outre les règles de maths...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo "3.2" |cut -f1 -d\.
    3
    expr $(echo "3.2" |cut -f1 -d\.) + 1
    4
    ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Super funny. Mais je pense qu'il voulait parler d'une instruction permettant de "forcer" l'arrondi inf ou l'arrondi sup en passant outre les règles de maths...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo "3.2" |cut -f1 -d\.
    3
    expr $(echo "3.2" |cut -f1 -d\.) + 1
    4
    ?
    Exact! Merci ;-)

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Super funny. Mais je pense qu'il voulait parler d'une instruction permettant de "forcer" l'arrondi inf ou l'arrondi sup en passant outre les règles de maths...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo "3.2" |cut -f1 -d\.
    3
    expr $(echo "3.2" |cut -f1 -d\.) + 1
    4
    ?
    [chipotage]
    Rq1: Attention au cas particulier ".2"...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expr 0 + 0$(echo ".2" |cut -f1 -d\.)
    [/chipotage]

    Rq2: si les valeurs sont dans des variables, on peut remplacer le pipe et le cut par l'extension de variable qui, aux dires de certains, serait plus efficace (n'est-ce pas N_BaH?):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ A=3.2
    $ expr 0 + 0${A%.*}
    3
    $ expr 1 + 0${A%.*}
    4

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 595
    Points : 19 477
    Points
    19 477
    Par défaut
    «tout à fait jack-ft_hierry

    même expr (qui n'est pas une commande d'un interpréteur) n'est pas indispensable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ A=.2
    $ echo $((${A%.*} + 0))
    0
    $ echo $((${A%.*}+1))
    1

Discussions similaires

  1. [XL-2007] Arrondir une variable à l'entier supérieur
    Par ddanie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2014, 17h37
  2. Réponses: 7
    Dernier message: 06/08/2012, 12h57
  3. Comment arrondir à l'entier supérieur ?
    Par kuranes dans le forum Access
    Réponses: 3
    Dernier message: 29/11/2005, 17h42
  4. Arrondir un float
    Par Marthym dans le forum MFC
    Réponses: 6
    Dernier message: 29/11/2005, 15h35
  5. [C#][VS2003] Arrondir un float à l'inférieur le plus proche
    Par gregos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/11/2005, 12h14

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