Kalkulator baris perintah yang menyimpan nilai fraksional

11

Saya baru saja menemukan program kalkulator baris perintah yang baik yang disebut bc dan puas dengan itu sampai saya menemukannya membulatkan nilai fraksional, sehingga menyebabkan hilangnya presisi.

Menurut manhalamannya:

Semua angka direpresentasikan secara internal dalam desimal dan semua perhitungan dilakukan dalam desimal. (Versi ini memotong hasil dari operasi divide dan multiply.)

Bisakah Anda menyarankan yang setara dengan bc untuk Ubuntu Maverick? Saya perlu membuat perhitungan baris perintah lanjutan dengan variabel.

sergionni
sumber

Jawaban:

13

Anda dapat mengatur panjang bagian pecahan dengan scale=n.

Perintah echo 'scale=20;752/447' | bcmenghasilkan:

1.68232662192393736017

Perhatikan bahwa meskipun angka tersebut sesuai dengan skala, nol tambahan mungkin ditambahkan:

scale=20
1/2
.50000000000000000000

Sayangnya, selalu ada masalah pembulatan:

scale=50
1/3*3
.99999999999999999999999999999999999999999999999999
Lekensteyn
sumber
dapatkah nilai skala ditetapkan sebagai global atau saya harus selalu menetapkannya secara eksplisit ketika mulai bc?
sergionni
1
@sergionni: Anda harus selalu meneruskan scalevariabel ke bc. Satu-satunya variabel lingkungan yang mungkin berguna adalah BC_ENV_ARGS. Variabel ini menempatkan beberapa argumen bc, Anda dapat membuat file dengan variabel standar atau pengaturan, dan mengatur BC_ENV_ARGS=/path/to/variables/file. Silakan baca halaman panduan .
Lekensteyn
Saya cenderung memulai bc via bc -ql. -qmenyembunyikan spanduk hak cipta (yang umumnya terbukti mengganggu) dan -lmemuat perpustakaan matematika dan secara otomatis mengatur skala ke 20. (Lihat man bc.)
i336_
9

calc(Saya percaya dari paket apcalc) melakukan hal yang sama bc, tetapi tidak bulat. Ini menampilkan mirip dengan bc, tetapi tidak seperti bcitu, ia memahami notasi ilmiah. Contoh:

> 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
; 

Bandingkan dengan 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

Pencarian kecil menghasilkan banyak hasil, tidak semuanya relevan, tetapi saya yakin bahwa beberapa percobaan akan memberi Anda apa yang Anda inginkan (wcalc, misalnya):

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
pindahkan
sumber
9

Saya menyarankan menggunakan Python sebagai kalkulator baris perintah:

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

    Return the sine of x (measured in radians).

Juga saya akan merekomendasikan IPython atau IDLE. Keduanya sangat meningkatkan kegunaan shell standar.

Perbarui : gunakan python3 untuk menghindari kejutan pemotongan:

$ python2.7

>>> 10/3
3

$ python3

>>> 10/3
3.3333333333333335
antimirov
sumber
Kalkulator terbaik yang pernah ada. Anda bisa melakukan apa saja.
Owais Lone
2
Itu memotong perhitungan juga.
daithib8
Itu tidak akan memotong apa pun jika Anda membagi misalnya seperti ini: 2.0 / 100. Tentu saja 2/100 akan sama dengan 0, karena itu adalah divisi integer.
user205301
6

Anda kehilangan presisi dalam pengertian ini: jika mengatur presisi ke 10 digit desimal, pembagian dipotong menjadi 10 digit desimal, dan ini adalah pilihan yang koheren.

Jika Anda mencari kalkulator yang tepat, Anda memerlukan sistem simbolik sebagai maxima.

Omong-omong, bcmendukung variabel.

enzotib
sumber
ya, saya tahu itu mendukung variabel, itulah yang saya minta analog
sergionni
5

"genius" adalah kalkulator paling canggih di luar sana, dengan opsi baris perintah dan GUI tersedia. Periksa manual untuk detailnya, dan lihat http://www.jirka.org/genius.html .

Untuk menginstal, cukup ketik:

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

Ini yang bagus:

keran - kalkulator perintah-nyata tepat baris perintah

Jens_G
sumber
1

Jika sudah octavemenginstal, Anda dapat menggunakannya di baris perintah sebagai:

octave --silent --eval 752/447

Untuk mempersingkat tulisan, Anda dapat menambahkan yang berikut sebagai alias di .bashrc

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

dan kemudian menyebutnya sebagai ose 752/447. Alias ​​/ pintas adalah arbitrer tetapi Anda harus me-restart terminal untuk membuatnya efektif.

Anda dapat menginstal octavemenggunakan:

sudo apt-get install octave

Tentu saja, dengan octaveAnda dapat menggunakan semua fungsi lanjutan yang tersedia di dalamnya juga.

Harris
sumber
1

Saya baru saja membuat yang sederhana:

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

$ ratio <<< '14/15 * 3'
14/5 
William Casarin
sumber
apakah itu mendukung variabel?
ravery
itu sangat sederhana sekarang, hanya ekspresi dasar. mungkin suatu hari?
William Casarin
OP menetapkan bahwa ia perlu menangani variabel
ravery