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 :

Faire une division et afficher le résultat complet (trois chiffres après la virgule)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 2
    Par défaut Faire une division et afficher le résultat complet (trois chiffres après la virgule)
    je suis débutante en shell et je voudrais faire une division et afficher le resultat complet ( trois chiffre après la virgule)
    voici ce que j'ai écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let "j=214646"
    let "y=1000"
    x=`echo "$j/$y" | bc -l`

  2. #2
    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
    Bonjour,

    1. ici, let ne sert à rien.
    2. les backticks (`) ne sont plus utilisées depuis ... ..
    3. lis le man bc, et cherche scale.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  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
    mouais, bc pour une division alors qu'un printf suffit...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    j=214646
    y=1000
    printf '%d.03d\n' $((j/y)) $(((j*1000/y)%1000))
    Bon, ok, cette version ne fonctionne qu'avec j et y des entiers.

  4. #4
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2022
    Messages : 2
    Par défaut
    bonsoir,

    je ne peut pas utiliser bc car je reçois l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash: bc: command not found
    (j'utilise git bash)
    j'ai aussi essayer awk et ça marche pas je reçoit l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk: cmd. line:1: fatal: division by zero attempted
    j'ai essayer ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf '%d.03d\n' $((j/y)) $(((j*1000/y)%1000))
    214.03d
    646.03d
    mais je reçoit pas le resultat, ça divise la variable j en deux. je veut juste appliquer une division j/y et avoir un résultat décimal complet car si j'écrit je reçoit seulement 214.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk -v j=$j -v y=$y 'BEGIN{printf("%.3f\n", j/y)}'                                                                                                                                                                       
    0.331
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    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
    ouais mais bon, j'ai fais une erreur, j'ai oublié un %:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '%d.%03d\n' $((j/y)) $(((j*1000/y)%1000))
    Mais, bon, c'était remarquable

Discussions similaires

  1. Afficher un double avec 2 chiffres après la virgule
    Par luilui dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 08/12/2010, 18h19
  2. [Débutant] afficher valeurs numériques avec deux chiffres après la virgule
    Par bahja29 dans le forum MATLAB
    Réponses: 4
    Dernier message: 07/04/2009, 11h48
  3. Réponses: 4
    Dernier message: 06/12/2007, 20h23
  4. Faire une division entre deux chiffres?
    Par shun dans le forum Langage SQL
    Réponses: 9
    Dernier message: 09/09/2005, 16h37
  5. Comment faire une division par 5 avec les decalages
    Par Zaion dans le forum Assembleur
    Réponses: 7
    Dernier message: 05/11/2004, 17h33

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