Élevé, je dois tester ma calculatrice de précision arbitraire, et bc
semble être un bon critère de comparaison, cependant, bc
tronque le résultat de chaque multiplication à ce qui semble être l'échelle maximale des opérandes impliqués chacun.
Existe-t-il un moyen rapide de désactiver cette fonction ou de régler automatiquement l'échelle de chaque multiplication sur la somme des échelles des facteurs afin qu'elle ne perde aucune précision?
Si vous avez une solution plus élégante à cela impliquant autre chose que bc
, je vous serais reconnaissant de la partager.
Exemple:
$ bc <<< '1.5 * 1.5'
2.2
La vraie réponse est 2,25.
bc
calculator
PSkocik
la source
la source
Réponses:
Vous pouvez contrôler l'échelle qui
bc
sort avec l'scale=<#>
argument.En utilisant votre exemple:
Vous pouvez également utiliser le
-l
commutateur (grâce à @manatwork) qui initialisera l'échelle à 20 au lieu de la valeur par défaut de 0. Par exemple:Vous pouvez en savoir plus sur
scale
labc
page de manuel .la source
bc -l
. " -L (La lettre ell.) Définit les fonctions mathématiques et initialise l'échelle à 20, au lieu du zéro par défaut" -bc
spécificationmin(max(sx,sy,scale),sx+sy)
oùsx
etsy
sont les échelles dex
ety
enx*y
. Le réglagescale=scale(x)+scale(y)
donnera la précision maximale nécessaire. Régler l'échelle sur un nombre plus élevé (comme un 1000) n'augmentera pas l'échelle du résultat. La variable d'échelle n'affecte que s directement le résultat de la divisionscale=1000; a/1
créera un résultat avec 1000 chiffres décimaux (après le point), quelle que soit l'échelle d'un avant.Essaye ça :
Recherche l'homme de BC pour la variable d'échelle
la source
J'ai créé cette fonction bash qui n'affichera pas de zéros à la fin
Exemple:
calc 1.25^3
= 1,953125la source