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