小数値を保持するコマンドライン計算機


11

bcという優れたコマンドライン計算プログラムを見つけましたが、小数値を四捨五入して精度が低下することがわかるまで満足していました。

そのmanページによると:

すべての数値は内部的に10進数で表され、すべての計算は10進数で行われます。(このバージョンでは、除算と乗算の結果が切り捨てられます。)

Ubuntu Maverick にbcに相当するものを提案していただけますか?変数を使用して高度なコマンドライン計算を行う必要があります。

回答:


13

を使用して小数部分の長さを設定できscale=nます。

コマンドのecho 'scale=20;752/447' | bc結果:

1.68232662192393736017

数値がスケール内に収まる場合でも、追加のゼロが追加される場合があることに注意してください。

scale=20
1/2
.50000000000000000000

残念ながら、常に丸めの問題があります。

scale=50
1/3*3
.99999999999999999999999999999999999999999999999999

スケール値をグローバルに設定することはできますか、それとも明示的に設定する必要がありますか?
セルギオーニ

1
@sergionni:常にscale変数をに渡す必要がありますbc。役に立つかもしれない唯一の環境変数はBC_ENV_ARGSです。この変数はにいくつかの引数をbc設定し、標準の変数または設定を使用してファイルを作成し、設定することができますBC_ENV_ARGS=/path/to/variables/fileマニュアルページをお読みください
-Lekensteyn

私はを介してbcを開始する傾向がありbc -qlます。-q著作権バナーを隠し(一般に注意をそらす)-l、数学ライブラリをロードし、自動的にスケールを20に設定します(man bc。を参照)
-i336_

9

calc(私はパッケージから信じていますapcalc)はと同じですがbc、丸めません。に似て表示されますbcが、とは異なりbc、科学表記法を理解します。例:

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

と比較してください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

少しの検索で多くの結果が得られますが、そのすべてが関連しているわけではありませんが、いくつかの試行を行うことで、希望どおりの結果(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

Pythonをコマンドライン計算機として使用することをお勧めします。

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

    Return the sine of x (measured in radians).

また、IPythonまたはIDLEをお勧めします。どちらも標準シェルの使いやすさを大幅に改善します。

更新:python3を使用して、切り捨ての驚きを回避します。

$ python2.7

>>> 10/3
3

$ python3

>>> 10/3
3.3333333333333335

史上最高の電卓。何でもできます。
オワイスローン

2
それも計算を切り捨てます。
-daithib8

たとえば、次のように分割しても、何も切り捨てられません:2.0 /100。もちろん、2/100は整数除算なので0になります。
user205301

6

この意味で精度が失われました。精度を10桁の10進数に設定すると、除算は10桁の10進数に切り捨てられます。これは一貫した選択です。

正確な計算機を探す場合、シンボリックシステムが必要maximaです。

ところで、bc変数をサポートしています。


はい、私はそれが変数をサポートしていることを知っています、それは私がアナログを求めていることです
-sergionni


1

ここに良いものがあります:

spigot-コマンドラインの正確な実際の計算機


1

あなたがいる場合はoctaveインストールされますが、コマンドラインなどでそれを使用することができます。

octave --silent --eval 752/447

文章を短くするために、以下をエイリアスとして追加できます .bashrc

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

そして、それをとして呼び出しますose 752/447。エイリアス/ショートカットは任意ですが、有効にするにはターミナルを再起動する必要があります。

以下octaveを使用してインストールできます。

sudo apt-get install octave

もちろん、octave使用可能な高度な機能もすべて使用できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.