Befehlszeilenrechner, der Bruchwerte speichert

11

Ich habe gerade ein gutes Befehlszeilenrechnerprogramm namens bc gefunden und war damit zufrieden, bis ich herausfand , dass es Bruchwerte abrundet und so zu Genauigkeitsverlusten führt.

Laut seiner manSeite:

Alle Zahlen werden intern dezimal dargestellt und alle Berechnungen werden dezimal durchgeführt. (Diese Version schneidet Ergebnisse von Divisions- und Multiplikationsoperationen ab.)

Könnten Sie bitte ein Äquivalent von bc für Ubuntu Maverick vorschlagen ? Ich muss erweiterte Befehlszeilenberechnungen mit Variablen durchführen.

sergionni
quelle

Antworten:

13

Sie können die Länge des Bruchteils mit einstellen scale=n.

Der Befehl echo 'scale=20;752/447' | bcergibt:

1.68232662192393736017

Beachten Sie, dass selbst wenn die Zahl in die Skala passt, möglicherweise zusätzliche Nullen angehängt werden:

scale=20
1/2
.50000000000000000000

Leider gibt es immer ein Rundungsproblem:

scale=50
1/3*3
.99999999999999999999999999999999999999999999999999
Lekensteyn
quelle
Könnte der Skalierungswert als global festgelegt werden oder sollte ich ihn immer explizit festlegen, wenn bc gestartet wird?
Sergionni
1
@sergionni: Sie sollten die scaleVariable immer an übergeben bc. Die einzige Umgebungsvariable, die nützlich sein könnte , ist BC_ENV_ARGS. Diese Variable enthält einige Argumente bc. Sie können eine Datei mit Standardvariablen oder -einstellungen erstellen und festlegen BC_ENV_ARGS=/path/to/variables/file. Bitte lesen Sie die Handbuchseite .
Lekensteyn
Ich neige dazu, bc über zu starten bc -ql. -qversteckt das Copyright-Banner (das sich im Allgemeinen als ablenkend erweist) und -llädt die Mathematikbibliothek und setzt die Skala automatisch auf 20. (Siehe man bc.)
i336_
9

calc(Ich glaube aus Paket apcalc) macht das gleiche wie bc, aber nicht rund. Es zeigt ähnlich bc, aber im Gegensatz zu bc, versteht es wissenschaftliche Notation. Beispiel:

> calc
C-style arbitrary precision calculator (version 2.12.3.3)
Calc is open software. For license details type:  help copyright
[Type "exit" to exit, or "help" for help.]

; a=234
; b=a/7
; b
    ~33.42857142857142857143
; c=b/1e20
; c
    ~0.00000000000000000033
; c*1e10
    ~0.00000000334285714286
; 

Vergleiche mit bc:

> bc -l
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'. 
a=234
b=a/7
b
33.42857142857142857142
c=b/10^20
c
.00000000000000000033
c*1e10
(standard_in) 6: syntax error
c*10^10
.00000000330000000000

Eine kleine Suche liefert viele Ergebnisse, von denen nicht alle relevant sind, aber ich bin sicher, dass Sie mit ein paar Versuchen genau das bekommen, was Sie wollen (zum Beispiel wcalc):

aptitude search calc
i   apcalc                               - Arbitrary precision calculator (original name: calc)
i A apcalc-common                        - Arbitrary precision calculator (common files)
p   apcalc-dev                           - Library for arbitrary precision arithmetic
p   bandwidthcalc                        - file transfer time calculator written in GTK+
p   calcoo                               - Scientific calculator (GTK+)
p   calcurse                             - text-based calendar and todo manager
p   concalc                              - console calculator
p   extcalc                              - multifunctional scientific graphic calculator
p   gcalcli                              - Google Calendar Command Line Interface
i   gcalctool                            - GNOME desktop calculator
p   ipcalc                               - parameter calculator for IPv4 addresses
p   ipv6calc                             - small utility for manipulating IPv6 addresses
p   kcalc                                - calculator for KDE 4
p   keurocalc                            - universal currency converter and calculator - binary package
p   keurocalc-data                       - universal currency converter and calculator - data package
p   lcalc                                - a program for calculating with L-functions
p   libcolor-calc-perl                   - Perl module for simple calculations with RGB colors
p   libdate-calc-perl                    - Perl library for accessing dates
p   libdate-pcalc-perl                   - Perl module for Gregorian calendar date calculations
p   libmath-basecalc-perl                - Convert numbers between various bases
p   libmath-calc-units-perl              - Human-readable unit-aware calculator
p   libmath-calculus-differentiate-perl  - Algebraic Differentiation Engine
p   libmath-calculus-expression-perl     - Algebraic Calculus Tools Expression Class
p   libmath-calculus-newtonraphson-perl  - Algebraic Newton Raphson Implementation
p   libticalcs-dev                       - Texas Instruments calculator communication library [development files]
p   libticalcs2-7                        - Texas Instruments calculator communication library
p   libwww-google-calculator-perl        - Perl interface for Google calculator
p   octave-physicalconstants             - provide physical constants values in Octave
i   openoffice.org-calc                  - office productivity suite -- spreadsheet
v   openoffice.org2-calc                 -
p   python-ipcalc                        - perform IP subnet calculations
v   python2.6-ipcalc                     -
p   r-cran-epicalc                       - GNU R Epidemiological calculator
p   rpncalc                              - RPN calculator trying to emulate an HP28S
p   science-numericalcomputation         - Debian Science Numerical Computation packages
p   sipcalc                              - Advanced console-based ip subnet calculator
p   subnetcalc                           - IPv4/IPv6 Subnet Calculator
p   sugar-calculate-activity             - calculate activity for the Sugar graphical shell
p   tapecalc                             - a full-screen tape editor that lets the user edit a calculation
p   transcalc                            - microwave and RF transmission line calculator
p   wcalc                                - A flexible command-line scientific calculator
p   wmcalclock                           - A dock.app which simply tells time and date
p   xsmc-calc                            - Smith Chart calculator for X
asoundmove
quelle
9

Ich würde vorschlagen, Python als Befehlszeilenrechner zu verwenden:

$ python
>>> from math import *
>>> help(sin)
    sin(x)

    Return the sine of x (measured in radians).

Auch würde ich IPython oder IDLE empfehlen. Beide verbessern die Benutzerfreundlichkeit der Standard-Shell erheblich.

Update : Verwenden Sie Python3, um Überraschungen beim Abschneiden zu vermeiden:

$ python2.7

>>> 10/3
3

$ python3

>>> 10/3
3.3333333333333335
Antimirov
quelle
Bester Taschenrechner aller Zeiten. Du könntest alles machen.
Owais Lone
2
Das schneidet auch Berechnungen ab.
Daithib8
Es wird nichts abgeschnitten, wenn Sie zB wie folgt teilen: 2.0 / 100. Natürlich wäre 2/100 gleich 0, weil es eine ganzzahlige Division ist.
user205301
6

Sie haben in diesem Sinne an Genauigkeit verloren: Wenn Sie die Genauigkeit auf 10 Dezimalstellen einstellen, werden die Unterteilungen auf 10 Dezimalstellen abgeschnitten, und dies ist eine kohärente Wahl.

Wenn Sie nach einem genauen Taschenrechner suchen, benötigen Sie ein symbolisches System als maxima.

bcUnterstützt übrigens Variablen.

Enzotib
quelle
Ja, ich weiß, dass es Variablen unterstützt, das ist, ich
frage
5

"genius" ist der fortschrittlichste Taschenrechner, der sowohl Befehlszeilen- als auch GUI-Optionen bietet. Weitere Informationen finden Sie im Handbuch unter http://www.jirka.org/genius.html .

Geben Sie zum Installieren einfach Folgendes ein:

sudo apt-get install genius gnome-genius
Paul Ogilive
quelle
1

Hier ist eine gute:

Zapfen - ein Befehlszeilen-Exaktrechner

Jens_G
quelle
1

Wenn Sie octaveinstalliert haben, können Sie es in der Befehlszeile verwenden als:

octave --silent --eval 752/447

Um das Schreiben zu verkürzen, können Sie Folgendes als Alias ​​in hinzufügen .bashrc

alias ose='octave --silent --eval'

und dann nenne es als ose 752/447. Der Alias ​​/ die Verknüpfung ist beliebig, aber Sie müssen das Terminal neu starten, damit es wirksam wird.

Sie können installieren octavemit:

sudo apt-get install octave

Natürlich octavekönnen Sie mit auch alle darin enthaltenen erweiterten Funktionen nutzen.

Harris
quelle
1

Ich habe gerade eine einfache gemacht:

https://github.com/jb55/ratio-cli

$ ratio <<< '14/15 * 3'
14/5 
William Casarin
quelle
unterstützt es Variablen?
Ravery
Im Moment ist es ganz einfach, nur grundlegende Ausdrücke. vielleicht eines Tages?
William Casarin
Das OP gab an, dass es
keine