bc
maneja los números como enteros:
# echo "100/3" | bc
33
bc -l
maneja los números como objetos de coma flotante:
# echo "100/3" | bc -l
33.33333333333333333333
¿Hay alguna manera de limitar el número de dígitos después del punto decimal?
command-line
bc
Adam Matan
fuente
fuente
scale=0;1234*1.1
, tienes que escribirloscale=0;1234*1.1/1
para obtenerlo1357
. De lo contrario, no importa el valor descale
, obtienes1357.4
.1234*1.0
le dará1234.0
Respuestas:
Establezca la
scale
variable especial:fuente
$ echo "scale=2; (100/180)*180" | bc
da 99.00 :(.5
.~$ echo "scale=2; 12/104" | bc
.11
Si redondeado esto sería.12
. Sin embargo, aún debería hacer el trabajo para mi tarea.echo "result = (100/180) * 180; scale=2; result / 1" | bc -l
. Ahora lo tienes99.99
.scale
trabaja solo para la división; Si algunos geeks lo necesitan en la multiplicación, entonces puedes lograrlo usando la manipulación de cuerdas. Diga si necesita multiplicar32 * 0.60
, la respuesta es19.20
. Si necesita obtener solo 19 en respuesta, puede obtenerlo por diferentes métodos.Usando la manipulación de cadenas
Sintaxis de manipulación de cadenas:
${Variable%pattern}
esto eliminará el patrón de coincidencia corto que viene después%
. Para obtener más detalles sobre la manipulación de cadenas, consulte la Guía avanzada de secuencias de comandos Bash .Utilizando
Scale
según lo indicado por**chronitis**
Para deshacerse de los ceros finales, en lugar de la manipulación de cadenas, también se puede dividir por 1.
fuente
Además de respuestas anteriores
Devoluciones
Agregue operaciones matemáticas para obtener solo 2 números decimales - (NÚMERO * 100) / 100
Ahora vuelve
fuente
También puede usar el comando printf para redondear el resultado hasta 3 decimales
fuente
Redondear
scale = 2 trunca la respuesta a dos dígitos decimales, pero podemos lograr el redondeo así:
fuente