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 :

Ceil (arrondi à l'entier supérieur)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut Ceil (arrondi à l'entier supérieur)
    Bonsoir,

    Je cherche un moyen d'arrondir à l'entier supérieur un calcul. La méthode que j'ai trouvée marche très bien lorsqu'un nombre décimal est donné à echo, et il arrondi à l'entier inférieur lorsque echo reçoit le résultat d'une division avec une variable entière. Or j'aimerais que cela marche lorsque l'on utilise une variable ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "1250.98" | perl -nl -MPOSIX -e 'print ceil($_);'
    1251
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    total="125098"
    echo $(($total/100)) | perl -nl -MPOSIX -e 'print ceil($_);'
    1250
    Merci de votre aide.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    c'est normal que ça ne fonctionne pas, la division est dans le echo, donc c'est bash qui l'effectue, pas Perl, et bash ne fait que des divisions entières

    soit tu passes la variable et le diviseur dans ton expression Perl en jouant avec les quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ total="125098"
    $ diviseur="100"
    $ perl -l -MPOSIX -e 'print ceil('$total'/'$diviseur')'
    1251
    soit avec un pipe en transitant au préalable par bc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ total="125098"
    $ diviseur="100"
    $ echo "$total / $diviseur" | bc -l | perl -nl -MPOSIX -e 'print ceil($_)'
    1251

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Quel est l’intérêt du perl ici ?
    C'est juste pour ton arrondi et rien d'autre ?

    Comme le dit Bufferbob, il y a la commande bc pour faire du calcul arbitraire, ensuite l'arrondi peut se cabler, voici un exemple en bash:

    On arrondi toutjours au niveau supérieur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ XX=1234.01
    $ XX=${XX%.} ; [ "${XX#*.}" != "$XX" -a "${XX#*.}" -gt 0 ] && XX=$((${XX%.*}+1)) || XX=${XX%.*} ; echo $XX
    1235
    $ XX=1234.00
    $ XX=${XX%.} ; [ "${XX#*.}" != "$XX" -a "${XX#*.}" -gt 0 ] && XX=$((${XX%.*}+1)) || XX=${XX%.*} ; echo $XX
    1234
    $ XX=1234
    $ XX=${XX%.} ; [ "${XX#*.}" != "$XX" -a "${XX#*.}" -gt 0 ] && XX=$((${XX%.*}+1)) || XX=${XX%.*} ; echo $XX
    1234
    $ XX=1234.
    $ XX=${XX%.} ; [ "${XX#*.}" != "$XX" -a "${XX#*.}" -gt 0 ] && XX=$((${XX%.*}+1)) || XX=${XX%.*} ; echo $XX
    1234

  4. #4
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    Bonjour disedorgue,
    J'arrive pas à comprendre ce que ta ligne dit en français. Pourrais-tu m'éclairer stp ? D'avance merci si possible
    XX=${XX%.} ?
    XX#*. ?
    ${XX%.*} ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    cf. man bash
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Merci beaucoup, je ne savais pas comment nommer ce type de fonction de caractères dans mes recherches

Discussions similaires

  1. [Formule]arrondi à l'entier supérieur
    Par kariiim dans le forum IHM
    Réponses: 8
    Dernier message: 20/02/2018, 14h53
  2. Obtenir une valeur non arrondie à l'entier supérieur
    Par Laurent3131 dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/05/2012, 09h52
  3. Arrondi à l'entier supérieur
    Par lito74 dans le forum Access
    Réponses: 7
    Dernier message: 01/03/2007, 15h48
  4. Comment arrondir à l'entier supérieur ?
    Par kuranes dans le forum Access
    Réponses: 3
    Dernier message: 29/11/2005, 17h42
  5. [SQL] commande pour l'arrondi à l'entier superieur
    Par seb.briet dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/01/2005, 15h36

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