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"