Este artículo fue publicado originalmente en go2linux.org el 22 de febrero de 2009. El dominio ya no me pertenece, pero soy el autor original. Lo republico aquí en garron.me con correcciones y mejoras.

Introducción

bc es una calculadora de precisión arbitraria disponible en prácticamente cualquier sistema Linux y Unix. Se puede usar para cálculos rápidos en la línea de comandos, dentro de scripts de shell (donde bash no tiene soporte nativo para números decimales), o de forma interactiva para definir y llamar a tus propias funciones.

Usar bc desde la línea de comandos

Pasa una expresión con echo y envíala a bc con una tubería:

echo "2+2" | bc

Salida:

4

Por defecto bc no muestra decimales. Para divisiones, usa scale para definir el número de decimales:

echo "scale=3; 5/3" | bc

Salida:

1.666

O carga la biblioteca matemática incluida con -l, que establece scale en 20 automáticamente:

echo "5/3" | bc -l

Salida:

1.66666666666666666666

Funciones matemáticas disponibles con -l

El flag -l carga la biblioteca matemática estándar:

| Función | Descripción | |---|---| | s(x) | seno de x (en radianes) | | c(x) | coseno de x (en radianes) | | a(x) | arcotangente de x | | e(x) | e elevado a la potencia x | | l(x) | logaritmo natural de x | | sqrt(x) | raíz cuadrada de x |

Calcular la raíz cuadrada de 2:

echo "sqrt(2)" | bc -l

Salida:

1.41421356237309504880

Modo interactivo

Ejecuta bc -l sin tubería para entrar en el intérprete interactivo:

bc -l

Escribe expresiones directamente:

2^10
1024
scale=5
22/7
3.14285

Pulsa Ctrl+D para salir.

Definir funciones propias

En modo interactivo puedes definir funciones:

define carea() {
    print "Radio del círculo? "; r = read()
    pi = 4*a(1)
    a = pi * r^2
    return(a)
}

Llámala:

carea()
Radio del círculo? 34
3631.68110754980098363664

Usar bc en scripts de shell

Bash no tiene aritmética de coma flotante nativa, por lo que bc es la solución estándar:

#!/bin/bash
resultado=$(echo "scale=2; 100/3" | bc)
echo "100 dividido entre 3 es: $resultado"