¿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?

Respuestas:


9

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

$ printf '%.3f\n' "$(echo "scale=3;1/8" | bc)"
0.125

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

¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.