Hoch, ich muss meinen willkürlichen Präzisionsrechner testen und bc
scheint ein guter Maßstab zum Vergleich zu sein, bc
schneidet jedoch das Ergebnis jeder Multiplikation auf die scheinbar maximale Skala der beteiligten Operanden ab.
Gibt es eine schnelle Möglichkeit, dies auszuschalten oder die Skala jeder Multiplikation automatisch auf die Summe der Skalen der Faktoren einzustellen, damit sie nicht an Genauigkeit verliert?
Wenn Sie eine elegantere Lösung für dieses Problem haben, die etwas anderes beinhaltet als bc
, würde ich es begrüßen, wenn Sie es teilen.
Beispiel:
$ bc <<< '1.5 * 1.5'
2.2
Die wirkliche Antwort ist 2.25.
bc
calculator
PSkocik
quelle
quelle
Antworten:
Sie können die Skalierung steuern, die
bc
mit demscale=<#>
Argument ausgegeben wird.Anhand Ihres Beispiels:
Sie können auch den
-l
Schalter verwenden (dank @manatwork), der die Skalierung auf 20 anstatt auf den Standardwert 0 initialisiert. Beispiel:Weitere Informationen finden Sie
scale
in derbc
Manpage .quelle
bc -l
. " -L (Der Buchstabe ell.) Definieren Sie die mathematischen Funktionen und initialisieren Sie die Skalierung auf 20 anstelle der Standard-Null" -bc
Spezifikationmin(max(sx,sy,scale),sx+sy)
dort , wosx
undsy
sind die Skalen vonx
undy
inx*y
. Die Einstellungscale=scale(x)+scale(y)
bietet die maximal erforderliche Präzision. Wenn Sie die Skalierung auf eine höhere Zahl (wie 1000) einstellen, wird die Skalierung des Ergebnisses nicht erhöht. Die Skalierungsvariable wirkt sich nur direkt auf s aus. Das Ergebnis der Divisionscale=1000; a/1
erzeugt ein Ergebnis mit 1000 Dezimalstellen (nach dem Punkt), unabhängig von der vorherigen Skalierung von a.Versuche dies :
Durchsuche den Mann von bc nach einer Skalenvariablen
quelle
Ich habe diese Bash-Funktion erstellt, die keine nachgestellten Nullen anzeigt
Beispiel:
calc 1.25^3
= 1,953125quelle