¿Cómo mostrar cero antes del punto decimal en bc?

9
echo "scale=3;1/8" | bc

se muestra .125en la pantalla. ¿Cómo mostrar 0.125si el resultado de salida es menor que uno?

Kevin Dong
fuente

Respuestas:

9

bcno puede generar cero antes del punto decimal, puede usar printf :

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125
Cuonglm
fuente
Comando más legible para los humanos. ;-)
Kevin Dong
1

Puedes canalizar a awk

echo "scale=3;1/8" | bc | awk '{printf "%.3f\n", $0}'

o podrías usar awk para todo

awk '{printf "%.3f\n", 1/8}' <<< ""

Salida

0.125

fuente
¿Por qué deberíamos hacer <<< ""?
Kevin Dong
@KevinDongNaiJia awk requiere un archivo de entrada para funcionar, esto crea y vacía here string. Entonces, básicamente, finge que hay un archivo vacío al final, de lo contrario, awk leerá desde stdin. Más información aquí
@cuonglm para que puedas, no edites mis respuestas, por favor.
@cuonglm Petty downvote, ¡bien!
1
@JID: no todos los shell son compatibles con esta cadena, debe especificarla para otros espectadores El uso de BEGINbloqueo le evita ese problema y es portátil.
Cuonglm