Como definir a escala padrão para a calculadora bc?

4

Ubuntu 14.04.1 LTS

Como faço para definir a escala padrão para a calculadora bc? Cada vez que eu executo bc eu quero que a escala = 2 seja a padrão, eu quero limitar todos os cálculos a 2 casas decimais. Eu fiz um arquivo no meu diretório home chamado .bc e dentro dele eu coloquei scale=2 na primeira linha seguido por um retorno de carro.

As permissões em ~ / .bc são: -rw-rw-rw- . Isso esta certo?

Então eu fiz set BC_ENV_ARGS=~/.bc; export BC_ENV_ARGS . Então eu corri bc, fiz um teste como 8,37843 * 32,190233, e ainda tenho mais de duas casas decimais.

O manual on-line não forneceu nenhum exemplo sobre isso, então, por favor, não me direcione para lá.

Obrigado.

EDIT: Ok, quando eu faço um teste como 78/31, dá-me 2 casas decimais. Mas quando eu faço meu teste acima, isso me dá mais de 2 decimais. Por que é que? Eu sempre quero mostrar apenas 2 decimais.

    
por Bulrush 08.05.2015 / 13:05

2 respostas

4

Como disse muru, a escala do resultado é a escala máxima da expressão envolvida. mas se você quiser definir a escala para divisão (deseja definir o nível de truncamento), coloque um arquivo .bc in your home (ex. /home/yourid/.bc) e edite-o para conter (o nome do arquivo pode ser qualquer coisa)

scale=8  (whatever you want)

Em seguida, no seu arquivo .cshrc, coloque

setenv BC_ENV_ARGS '/home/yourid/.bc'

Dessa forma, sua escala padrão é definida como 8.

bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type 'warranty'. 
1/3
.33333333
    
por Chan Kim 25.07.2017 / 03:11
0

De man bc (ênfase minha):

Unless  specifically  mentioned  the scale of the result is the maximum
scale of the expressions involved.
....
expr / expr
      The result  of  the  expression  is  the  quotient  of  the  two
      expressions.   The  scale  of  the  result  is  the value of the
      variable scale.

Lendo mais, parece que scale é principalmente aplicável apenas se a divisão estiver envolvida ( / , ^ com expoentes negativos, % , etc.).

Portanto, use alguma outra ferramenta para que seja impressa da maneira desejada (como printf ou awk ) ou divida por 1:

$ echo '8.37843*32.190233/1' | bc
269.70
    
por muru 08.05.2015 / 13:19