Máy tính dòng lệnh giữ các giá trị phân số


11

Tôi chỉ tìm thấy một chương trình tính toán dòng lệnh tốt gọi là bc và hài lòng với nó cho đến khi tôi phát hiện ra nó làm tròn các giá trị phân số, do đó gây ra sự mất chính xác.

Theo mantrang của nó :

Tất cả các số được biểu diễn bên trong bằng số thập phân và tất cả các tính toán được thực hiện bằng số thập phân. (Phiên bản này cắt ngắn kết quả từ các hoạt động chia và nhân.)

Bạn có thể vui lòng đề xuất một bc tương đương cho Ubuntu Maverick không? Tôi cần phải thực hiện các tính toán dòng lệnh nâng cao với các biến.

Câu trả lời:


13

Bạn có thể đặt độ dài của phần phân đoạn với scale=n.

Lệnh echo 'scale=20;752/447' | bcmang lại:

1.68232662192393736017

Lưu ý rằng ngay cả khi số vừa với thang đo, số 0 bổ sung có thể được thêm vào:

scale=20
1/2
.50000000000000000000

Thật không may, luôn có một vấn đề làm tròn:

scale=50
1/3*3
.99999999999999999999999999999999999999999999999999

giá trị tỷ lệ có thể được đặt thành toàn cục hay tôi phải luôn đặt nó một cách rõ ràng khi bắt đầu bc?
sergionni

1
@sergionni: Bạn phải luôn luôn chuyển scalebiến sang bc. Biến môi trường duy nhất thể hữu ích là BC_ENV_ARGS. Biến này đặt một số đối số bc, bạn có thể tạo một tệp với các biến hoặc cài đặt tiêu chuẩn và đặt BC_ENV_ARGS=/path/to/variables/file. Vui lòng đọc trang hướng dẫn .
Lekensteyn

Tôi có xu hướng bắt đầu bc qua bc -ql. -qẩn biểu ngữ bản quyền (thường gây mất tập trung) và -ltải thư viện toán học và tự động đặt tỷ lệ thành 20. (Xem man bc.)
i336_

9

calc(Tôi tin từ gói apcalc) làm tương tự bc, nhưng không làm tròn. Nó hiển thị tương tự bc, nhưng không giống như bc, nó hiểu ký hiệu khoa học. Thí dụ:

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

So sánh với 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

Một tìm kiếm nhỏ cho thấy rất nhiều kết quả, không phải tất cả đều có liên quan, nhưng tôi chắc chắn rằng một vài thử nghiệm sẽ giúp bạn có được chính xác những gì bạn muốn (ví dụ: 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

9

Tôi sẽ đề nghị sử dụng Python làm máy tính dòng lệnh:

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

    Return the sine of x (measured in radians).

Ngoài ra tôi muốn giới thiệu IPython hoặc IDLE. Cả hai đều cải thiện khả năng sử dụng của vỏ tiêu chuẩn.

Cập nhật : sử dụng python3 để tránh những bất ngờ cắt ngắn:

$ python2.7

>>> 10/3
3

$ python3

>>> 10/3
3.3333333333333335

Máy tính tốt nhất bao giờ hết. Bạn có thể làm bất cứ điều gì.
Owais Lone

2
Mà cắt ngắn tính toán quá.
daithib8

Nó sẽ không cắt bất cứ thứ gì nếu bạn chia, ví dụ như thế này: 2.0 / 100. Tất nhiên 2/100 sẽ bằng 0, vì đó là một phép chia số nguyên.
dùng205301

6

Bạn đã mất độ chính xác theo nghĩa này: nếu đặt độ chính xác thành 10 chữ số thập phân, các phép chia được cắt thành 10 chữ số thập phân và đây là một lựa chọn mạch lạc.

Nếu bạn tìm kiếm một máy tính chính xác, bạn cần một hệ thống tượng trưng như maxima.

Nhân tiện, bchỗ trợ các biến.


vâng, tôi biết nó hỗ trợ các biến, đó là tôi đang yêu cầu tương tự
sergionni

5

"Thiên tài" là máy tính tiên tiến nhất hiện có, với cả hai tùy chọn dòng lệnh và GUI có sẵn. Kiểm tra hướng dẫn để biết chi tiết và xem http://www.jirka.org/genius.html .

Để cài đặt, chỉ cần gõ:

sudo apt-get install genius gnome-genius

1

Đây là một thứ tốt:

spigot - một máy tính thực sự chính xác dòng lệnh


1

Nếu bạn đã octavecài đặt, bạn có thể sử dụng nó tại dòng lệnh như:

octave --silent --eval 752/447

Để rút ngắn chữ viết, bạn có thể thêm phần dưới đây vào bí danh .bashrc

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

và sau đó gọi nó là ose 752/447. Bí danh / phím tắt là tùy ý nhưng bạn cần khởi động lại thiết bị đầu cuối để làm cho nó hiệu quả.

Bạn có thể cài đặt octavebằng cách sử dụng:

sudo apt-get install octave

Tất nhiên, với octavebạn cũng có thể sử dụng tất cả các chức năng nâng cao có sẵn trong đó.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.