FAQ bc, comment utiliser la calculatrice sous Unix

Creation: 21 mai 2013
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2013 Jean-Louis BICQUELET-SALAÜN

bc Frequently-Asked Questions

comment utiliser l'outils de calcul bc sous Unix. Sans être un outils miracle, il peut vous rendre bien des services.

Pour plus d'information au sujet de cette faq, contactez Jean-Louis BICQUELET


FAQ Revised: Wednesday 22 May 2013 19:07:57


Table of Contents

1. utilisation
2. modes
3. variables
4. systeme
5. math
6. test

1. utilisation

1.1. comment utiliser bc en mode interactif ?
Tapez simplement bc. La combinaison de touche CTRL+D vous permet de sortir.

on peut aussi sortir en utilisant la commande quit.

 bc
12+3
15


1.2. comment utiliser bc ?
Une des manière les plus simple est de piper le résultat d'une commande echo.
echo "35/7"
35/7
echo "35/7" | bc
5
On peut aussi utiliser printf mais il faut penser à terminer la ligne par "\n""
printf "2+3\n" | bc
5
On peut aussi écrire un fichier contenant les calculs à effectuer et l'executer
#echo "3+4" > calcul
# cat calcul | bc
7
Par contre la syntaxe suivante demande un CTRL+D pour se terminer.
bc calcul
7


1.3. comment utiliser bc autrement ?
En utilisant le shell et les redirection, comme le montre l'exemple suivant.
 bc << END
> 4+5
> scale=2
> 3/7
> END
9
.42


1.4. comment faire plusieurs calculs avec bc?
echo "1+3;3+4"| bc
4
7


1.5. comment récupérer le résultat d'un précédent calcul?

On peut utiliser le ..

echo "1+5;./2" | bc
6
3



2. modes

2.1. commant faire des calculs décimaux avec bc?
echo "scale=2;4/2.7" | bc
1.48
Pour plus de précision on augmente l'echelle
echo "scale=20; 99/69"|bc
1.43478260869565217391


2.2. comment convertir un nombre décimal en base hexadécimale?
echo "obase=16 ; 224" | bc
E0
echo "obase=16; 2^8-1"|bc
FF


2.3. comment convertirun nombre hexadécimale en décimal?
 echo "ibase=16; EA"|bc
234


2.4. comment faire des opérations en base hexadécimale?
echo "obase=16 ;10+7" | bc
11



3. variables

3.1. comment utiliser les variables
 echo  "a=23;b=2;a+b" | bc
25



4. systeme

4.1. comment faire une boucle for avec bc?
 echo "for (i = 1; i <= 10; ++i) { i } " | bc
L'utilisation dans un script shell se ferait ainsi:
 for i in $(echo "for (i = 1; i <= 3; ++i) { i } " | bc)
> do
> echo "serveur"$i
> done
serveur1
serveur2
serveur3
Une autre façon de faire est:
echo "i=1; while(i<=10) { i; i+=1}" | bc
ou de manière plus concise
echo "i=1; while(i<=10) {i++}"| bc


4.2. comment récupérer le résultat d'un calcul dans une variable?
a=$(echo "3+4"|bc)
# echo $a
7
ou
a=`echo "3+4"|bc`
# echo $a


4.3. mixer bc avec les variables shell?
En entrée:
 i=2; j=3; echo "$i*$j" | bc
6
En sortie:


4.4. comment afficher facilement un pourcentage?
 printf "Percentage: %2.2f%%\n" $(echo .9912*100|bc)
ou encore
Percentage: 99.12%
v=.9978
 printf "Percentage: %2.2f%%\n" $(echo $v*100|bc)
Percentage: 99.78%



5. math

5.1. de quelles fonctions mathématiques disposent-on?
scale=4
sqrt(2)
1.4142
Pour les autres fonctions, il faut spécifier qu'on utilise la librairie mathématique en utilisant l'option -l. On dispose alors de:
  • s() sinus
  • c() cosinus
  • a() arctangante
  • l() logarithme népérien
  • e() exponentielle
  • j() fonction de Bessel
 bc -l
s(30)
-.98803162409286178998
c(1)
.54030230586813971740
l(1)
0
e(1)
2.71828182845904523536


5.2. comment calculer une factoriel?
$ cat fc
define f(n) {
 auto i, r;

 r = 1;
 for (i=2; i<=n; i++) r =* i;
 return (r);
}
f(4)

$ cat fc | bc
24



6. test

6.1. comment faire un test avec bc?
if (a < 6) "ok"
ok
if (a < 6) a=a+2; b=1
a
4
b
1