#1 Le 04/10/2008, à 19:13
- anonyme1
[résolu] bash - opération avec exposant non entier
Bonjour
Comment puis-je réaliser une opération impliquant un non-entier :
echo "656*(787/588)^(0.65)" | bc -l
ne donne pas un résultat correct puisque 9/10 n'est pas un entier
Merci
Dernière modification par redrum (Le 05/10/2008, à 09:09)
#2 Le 04/10/2008, à 22:21
- nicolas66
Re : [résolu] bash - opération avec exposant non entier
La commande `bc' ne gère pas les nombres non-entiers (nombres flottants) par défaut. Il convient donc de lui indiquer via l'instruction `scale=n', où n désigne le nombre de décimales.
Cependant, cette commande ne gère pas les puissances non entières. Je te conseille donc de plutôt faire appel à de "vrais" langages comme le C ou python. Exemple en python :
python -c "print 656*(787.0/588.0)**0.65"
Note : essayes de prendre l'habitude de lire les pages de man associées avant de venir demander de l'aide
Dernière modification par nicolas66 (Le 04/10/2008, à 22:24)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#3 Le 05/10/2008, à 00:23
- Link31
Re : [résolu] bash - opération avec exposant non entier
Cependant, cette commande ne gère pas les puissances non entières.
Pas sans quelques manipulations, mais ça reste possible :
http://en.wikipedia.org/wiki/Bc_(Unix)# … _in_GNU_bc
Dernière modification par Link31 (Le 05/10/2008, à 00:23)
Hors ligne
#4 Le 05/10/2008, à 01:38
- nicolas66
Re : [résolu] bash - opération avec exposant non entier
@Link31 : au temps pour moi, j'avais pas pensé à cette astuce .
@redrum : dans un premier temps, tu peux déjà utiliser une extension de `bc' sous GPL. Elle fournit pas mal de fonctions mathématiques.
Dernière modification par nicolas66 (Le 05/10/2008, à 01:39)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#5 Le 05/10/2008, à 09:06
- anonyme1
Re : [résolu] bash - opération avec exposant non entier
Bonjour nicolas66, bonjour Link31
@nicolas66,
Merci pour ton aide précieuse.
@link31,
Merci pour ton astuce, cela me rappelle les joies de la terminale scientifique!
@ tous,
La réponse au problème est :
echo "656*e(0.65*l(787/588))" | bc -l
Dernière modification par redrum (Le 08/10/2008, à 14:45)