web-dev-qa-db-fra.com

Comment définir l'échelle par défaut pour la calculatrice bc?

Ubuntu 14.04.1 LTS

Comment définir l'échelle par défaut pour la calculatrice bc? Chaque fois que j'exécute bc, je veux que scale = 2 soit la valeur par défaut, je souhaite limiter tous les calculs à 2 décimales. J'ai créé un fichier dans mon répertoire personnel appelé .bc et à l'intérieur, j'ai placé scale=2 sur la première ligne, suivi d'un retour à la ligne.

Les autorisations sur ~/.bc sont: -rw-rw-rw-. Est-ce correct?

Puis j'ai fait set BC_ENV_ARGS=~/.bc; export BC_ENV_ARGS. Ensuite, j’ai couru bc, fait un test comme 8.37843 * 32.190233 et j’ai quand même eu plus de 2 décimales.

Le manuel en ligne ne fournit aucun exemple, alors veuillez ne pas me diriger là-bas.

Merci.

EDIT: Ok quand je fais un test comme 78/31, il me donne 2 décimales. Mais lorsque je fais mon test ci-dessus, il me donne plus de 2 décimales. Pourquoi donc? Je veux toujours montrer que 2 décimales.

6
Bulrush

Comme muru l'a dit, l'échelle du résultat est l'échelle maximale de l'expression impliquée. mais si vous souhaitez définir l'échelle pour la division (souhaitez définir le niveau de troncature), placez un fichier .bc in your home (ex. /home/yourid/.bc) et modifiez-le pour le contenir (le nom du fichier peut être n'importe quoi)

scale=8  (whatever you want)

Ensuite, dans votre fichier .cshrc, mettez

setenv BC_ENV_ARGS '/home/yourid/.bc'

De cette manière, votre échelle par défaut est définie sur 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
7
Chan Kim

addendum rapide à ce que muru a dit pour bash utilisateurs:

Au lieu de cshrc, ajoutez la ligne suivante à votre .bashrc dans /home/yourname/.bashrc:

export BC_ENV_ARGS=/home/<yourname>/.bc
0
htedr

De man bc (c'est moi qui souligne):

 _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.
_

En lisant plus loin, il semble que scale ne s'applique généralement que si une division est impliquée (_/_, _^_ avec des exposants négatifs, _%_, etc.).

Par conséquent, utilisez un autre outil pour l’imprimer comme vous le souhaitez (comme printf ou awk), ou divisez par 1:

_$ echo '8.37843*32.190233/1' | bc
269.70
_
0
muru