bc

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Der Shell-Befehl bc (basic calculator) beherrscht auf der Shell das Rechnen mit Fliesskommazahlen.

Konzept

bc rechnet standardmässig im Dezimalsystem.

bc speichert alle Befehle in einer History, die mit Hilfe der Pfeiltasten angesehen werden kann.

Beim Dividieren treten bei bc Rundungsfehler auf wie bei allen Programmen, die mit einer festen Anzahl von Nachkommazahlen arbeiten. Die Berechnung von "1/3*3" ergibt "0.99999..." (mit so vielen Neunen wie Nachkommastellen verwendet werden), während der mathematisch gleiche Ausdruck "1/(3/3)" richtig den Wert "1" ergibt.

Für kompliziertere Aufgaben können aus der Programmiersprache C bekannte Kontrollstrukturen verwendet werden, darunter die for-Schleife.

Syntax

+ Addition
- Subtraktion
* Multiplikation
/ Division
^ Exponential-Operator

Verwendung

Aufruf von bc zum Rechnen mit Ganzzahlen. Zum Beenden des Programms kann "quit" oder die Tastenkombination CTRL+D eingegeben werden.

$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
(1.1+2)*2
6.2
1/2
0
quit

Aufruf von bc zum Rechnen mit Fliesskommazahlen.

$ bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1/2
.50000000000000000000

Eingabe mehrerer Aufgaben hintereinander.

1.1+2; 3.1-2
3.1
1.1

Setzen, Anzeigen und Verwendung von Variablen.

a=201; b=300
a
201
b
300
a*b
60300
a+b
501
a + -b
-99
-a
-201

Einstellen der Nachkommastellen im laufenden Betrieb.

scale=2
1/2
.50
scale=23
1/2
.50000000000000000000000

Anzeige der Quadratwurzel (engl. square root).

sqrt(144)
12

Rechnen im Hexadezimalsystem (mit der Basisi 16) anstelle des standardmässigen Dezimalsystems und Zurückschalten ins Dezimalsystem.

ibase
10
ibase=16
A
10
ibase=A
10
10

Ausgabe im Hexadezimalsystem und Zurücksetzen der Ausgabe ins Dezimalsystem. Im Beispiel wird der hexadezimale Wert für den Wert "15" angezeigt.

obase=16
15
F
obase=10
15
15

Ausgabe der Quadratzahlen von 1 bis 3.

for (i=1; i<=3; i++) print i^2,"\n";
1
4
9

Weitergabe einer Aufgabe in der Bash mittels Pipe-Zeichen an bc.

$ echo "1/3" | bc -l
.33333333333333333333
$ a=2; b=3; x=$(echo "$a*$b" | bc -l); echo $x
6