bc
lida com 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?
command-line
bc
Adam Matan
fonte
fonte
scale=0;1234*1.1
, você deve escrevê-lo comoscale=0;1234*1.1/1
conseguir1357
. Caso contrário, não importa o valor descale
, você recebe1357.4
.1234*1.0
você vai dar1234.0
Respostas:
Defina a
scale
variável especial:fonte
$ echo "scale=2; (100/180)*180" | bc
dá 99,00 :(.5
.~$ echo "scale=2; 12/104" | bc
.11
Se arredondado isso seria.12
. No entanto, ele ainda deve fazer o trabalho para minha tarefa.echo "result = (100/180) * 180; scale=2; result / 1" | bc -l
. Agora você entende99.99
.scale
trabalha apenas para divisão; se alguns geeks precisarem disso em multiplicação, você pode conseguir isso usando a manipulação de strings. Diga se você precisa multiplicar32 * 0.60
, a resposta é19.20
. Se você precisar obtê-lo sozinho, em resposta, poderá obtê-lo por diferentes métodos.Usando manipulação de string
Sintaxe de manipulação de string:,
${Variable%pattern}
isso excluirá o padrão de correspondência curta que vem depois%
. Para mais detalhes sobre manipulação de String, consulte o Advanced Bash-Scripting Guide .Usando
Scale
como indicado por**chronitis**
Para se livrar dos 0s à direita, em vez da manipulação de cordas, também é possível dividir por 1.
fonte
Além das respostas anteriores
Devoluções
Adicione operações matemáticas para obter apenas 2 números decimais - (NÚMERO * 100) / 100
Agora retorna
fonte
você também pode usar o comando printf para arredondar o resultado até 3 casas decimais
fonte
Arredondamento
scale = 2 trunca a resposta para dois dígitos decimais, mas podemos obter o arredondamento da seguinte forma:
fonte