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 :

[bc] fonctionnement de scale


Sujet :

Shell et commandes GNU

  1. #1
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut [bc] fonctionnement de scale
    Bonjour à tous,
    Il ya un truc qui m'échappe avec la fonction scale de bc. Cette fonction ne semble fonctionner que pour les opérations d'entiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    alex@TREX:~/Desktop$ echo $(echo "scale=3; 0.9876*0.12345;"|bc)
    .12191    => 5 chiffres ?!!
    alex@TREX:~/Desktop$ echo $(echo "scale=3; 2/3;"|bc)
    .666       => 3 chiffres (OK)
    Je fais un truc de travers ?
    Merci,

  2. #2
    Membre chevronné Avatar de Leeloo_Multiboot
    Profil pro
    Administrateur Unix/Linux
    Inscrit en
    Avril 2008
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur Unix/Linux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2008
    Messages : 417
    Par défaut
    Bonjour,

    Je fais un truc de travers ?
    Non, je ne pense pas
    Apparemment si les "scale" des nombres flottants de l'opération sont plus grands que celui souhaité pour le résultat cela ne marche pas.

    Je pense que le meilleur moyen est d'essayer de tronquer le résultat à l'aide d'une autre commande

    Edit: A priori, il y a juste pour la multiplication que l'option scale ne fonctionne pas...

  3. #3
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Citation Envoyé par Leeloo_Multiboot Voir le message
    Bonjour,
    Je pense que le meilleur moyen est d'essayer de tronquer le résultat à l'aide d'une autre commande
    C'est ce que j'ai fait, mais bon ça rajoute de la complexité pour rien...
    Citation Envoyé par Leeloo_Multiboot Voir le message
    Edit: A priori, il y a juste pour la multiplication que l'option scale ne fonctionne pas...
    J'ai l'impresion que ça m'arrive tout le temps...
    Merci à toi en tout cas,

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Par défaut
    Bonjour,

    Comme vous l'avez fait remarqué, l'option scale est boiteuse pour les produits
    Citation Envoyé par Leeloo_Multiboot Voir le message
    Edit: A priori, il y a juste pour la multiplication que l'option scale ne fonctionne pas...
    pour pallier au problème lié à la troncature d'un produit de décimaux avec bc, on peut s'en sortir en transformant le produit en une division;
    ainsi, echo $(echo "scale=3; 0.9876*0.12345;"|bc) donne .12191
    mais echo $(echo "scale=3; 0.9876/(1/0.12345);"|bc) donne .121

    c'est pas très joli mais ça marche...

  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
    Par défaut
    Citation Envoyé par marmiton Voir le message
    Bonjour,

    Comme vous l'avez fait remarqué, l'option scale est boiteuse pour les produits

    pour pallier au problème lié à la troncature d'un produit de décimaux avec bc, on peut s'en sortir en transformant le produit en une division;
    ainsi, echo $(echo "scale=3; 0.9876*0.12345;"|bc) donne .12191
    mais echo $(echo "scale=3; 0.9876/(1/0.12345);"|bc) donne .121

    c'est pas très joli mais ça marche...
    ou alors, comme l'a très justement suggéré MarcG, il suffit de diviser par 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # echo "scale=3; 0.9876 * 0.12345 / 1;" | bc
    .121
    HTH

    )jack(

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/06/2003, 16h51
  2. Réponses: 5
    Dernier message: 14/05/2003, 14h51
  3. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  4. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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