Want to do a few simple calculations? Standard UNIX provides
two simple calculators: *
dc*
(desk calculator) and *
bc*
.
(Who knows
what the *
b*
stands for? The manual page refers to it only as "an
arbitrary precision arithmetic language.")

To a novice, *
dc*
sounds more promising.
However, it's a
reverse-Polish calculator. You enter each operand on a
separate line, followed by an operator. The operands are
stored on a stack; the operator pops them from the stack,
replacing them with the result. Unfortunately for the novice,
the result isn't printed.
You need to type *
p*
("print") to get
any output.

*
bc*
is actually much easier to use:

% ```
```**
bc
5*2**

10
`
[CTRL-d]`
%

Simply type an arithmetic expression, followed by a RETURN.
The result will be printed to standard output. Type CTRL-d to
exit.

The only thing you need to learn to find *
bc*
really useful is
the *
scale*
command, which tells the calculator how many decimal
places to use. The default is 0, so typing an expression like
```
10/4
```

yields the unfortunate answer 2. However:

% ```
```**
bc
scale=2
10/4**

2.50

gives a more acceptable two decimal places. Scale can be set
from 0 to 99 decimal places.

As an alternative, invoke *
bc*
with the *
-l*
option, which will
automatically give you up to 20 decimal places worth of
precision (but a lot of trailing zeros on simple division).

*
bc*
is really quite complete - you can even define your own
functions.
See the *
bc*
manual page for details.
It's also useful for
base conversion (
49.2
)
.

*
expr*
can also be used to do
simple math (
49.6
)
on the command line,
but it's really better suited for
doing math in shell scripts (
45.28
)
.

Of course, if you're running the
X Window System (
1.31
)
,
you can just use *
xcalc*
, which draws a Texas Instruments or HP
calculator right on the screen, and lets you punch keys on the keyboard
or with the mouse.