Defina a variável especial scale
:
$ echo "scale=2; 100/3" | bc
33.33
bc
processa números como números inteiros:
# echo "100/3" | bc
33
bc -l
lida com números como objetos de ponto flutuante:
# echo "100/3" | bc -l
33.33333333333333333333
Existe uma maneira de limitar o número de dígitos após o ponto decimal?
Defina a variável especial scale
:
$ echo "scale=2; 100/3" | bc
33.33
scale
funciona apenas para divisão; Se alguns geeks precisarem de multiplicação, você pode conseguir isso usando a manipulação de strings.
Diga se você precisa multiplicar 32 * 0.60
, a resposta é 19.20
. Se você precisar obter 19 sozinho na resposta, poderá obtê-lo por métodos diferentes.
Usando a manipulação de string
$ S=$(echo "32*.60" | bc ) ; echo ${S%.*}
19
Sintaxe da manipulação de sequências: ${Variable%pattern}
, isso excluirá o padrão de correspondência curto que vem após %
. Para obter mais detalhes sobre manipulação de strings, consulte o Guia avançado de script de script .
Usando Scale
como declarado por **chronitis**
$ echo "scale=0; 32*60/100" | bc
19
Para se livrar dos 0s à direita, em vez da manipulação de strings, também é possível dividir por 1.
$ echo "0.232 * 1000" | bc
232.000
$ echo "0.232 * 1000 / 1" | bc
232
Além das respostas anteriores
echo "scale=2; 1.0150876" | bc
Retorna
1.0150876
Adicione operações matemáticas para obter apenas dois números decimais - (NUMBER * 100) / 100
echo "scale=2; (1.0150876 * 100) / 100" | bc
Agora retorna
1.01
Round-off
scale = 2 trunca a resposta para dois dígitos decimais, mas podemos obter um arredondamento assim:
$ echo "a=12/104; scale=2; (a+0.005)/1" | bc -l
.12
Tags command-line bc