bashまたは他の言語/フレームワークで整数と浮動小数点の計算を行う方法は?


294

echo "20+5"文字通りに使用すると、テキスト「20+5」が生成されます。

25この場合、数値の合計を取得するためにどのコマンドを使用できますか?

また、浮動小数点にbashを使用するだけの簡単な方法は何ですか?たとえば、:(をecho $((3224/3807.0))出力し0ます。

基本的なコマンドシェル(「コマンドライン」)自体を使用するか、コマンドラインから使用可能な言語を使用して回答を探しています。


1
を使用している場合は、manページのオプションbcについて読むのに時間がかかるかもしれません-l
グレンジャックマン

筆者はbashコマンドラインを求めていると思いますが、回答はすべて、あらゆる種類のスクリプト言語に多様化する傾向があります。
ジンキング

2
男のbash→/表現
ДМИТРИЙМАЛИКОВ

1
@zinkingさて、bashは、他の多数のスクリプト言語のインタープリターを簡単に呼び出すことができるように設計されています。
Random832

浮動小数点の結果を使用してbash整数除算を教える:stackoverflow.com/a/24431665/3776858
Cyrus 14

回答:


399

たくさんのオプションがあります!!!

概要

$ printf %.10f\\n "$((10**9 * 20/7))e-9"   # many shells. Not mksh.
$ echo "$((20.0/7))"                       # (ksh93/zsh/yash, not bash)
$ awk "BEGIN {print (20+5)/2}"
$ zcalc
$ bc <<< 20+5/2
$ bc <<< "scale=4; (20+5)/2"
$ dc <<< "4 k 20 5 + 2 / p"
$ expr 20 + 5
$ calc 2 + 4
$ node -pe 20+5/2  # Uses the power of JavaScript, e.g. : node -pe 20+5/Math.PI
$ echo 20 5 2 / + p | dc 
$ echo 4 k 20 5 2 / + p | dc 
$ perl -E "say 20+5/2"
$ python -c "print(20+5/2)"
$ python -c "print(20+5/2.0)"
$ clisp -x "(+ 2 2)"
$ lua -e "print(20+5/2)"
$ php -r 'echo 20+5/2;'
$ ruby -e 'p 20+5/2'
$ ruby -e 'p 20+5/2.0'
$ guile -c '(display (+ 20 (/ 5 2)))'
$ guile -c '(display (+ 20 (/ 5 2.0)))'
$ slsh -e 'printf("%f",20+5/2)'
$ slsh -e 'printf("%f",20+5/2.0)'
$ tclsh <<< 'puts [expr 20+5/2]'
$ tclsh <<< 'puts [expr 20+5/2.0]'
$ sqlite3 <<< 'select 20+5/2;'
$ sqlite3 <<< 'select 20+5/2.0;'
$ echo 'select 1 + 1;' | sqlite3 
$ psql -tAc 'select 1+1'
$ R -q -e 'print(sd(rnorm(1000)))'
$ r -e 'cat(pi^2, "\n")'
$ r -e 'print(sum(1:100))'
$ smjs
$ jspl

詳細

整数演算にはPOSIX算術展開を使用できますecho "$((...))"

$ echo "$((20+5))"
25
$ echo "$((20+5/2))"
22

かなりポータブル(ash dash yash bash ksh93 lksh zsh):
floatを出力するprintf機能を使用すると、限られた範囲(10桁以内)であるにもかかわらず、ほとんどのシェルを拡張して浮動小数点演算を実行できます。

$ printf %.10f\\n "$((1000000000 *   20/7  ))e-9"
2.8571428570

ksh93yashそしてzshここでのサポート山車の操作を行います。

$ echo "$((1.2 / 3))"
0.4

ここにksh93(直接)およびzshライブラリmathfunc をロードするだけです:

$ echo "$((4*atan(1)))"
3.14159265358979324

(のような関数を取得zshするにはロードzmodload zsh/mathfuncする必要がありますatan)。


zshと対話的に:

$ autoload zcalc
$ zcalc
1> PI/2
1.5708
2> cos($1)
6.12323e-17
3> :sci 12
6.12323399574e-17

(t)cshを使用(整数のみ):

% @ a=25 / 3; echo $a
8

rcシェルファミリー、akanga算術拡張を有するものです。

; echo $:25/3
8

POSIXツールチェスト

bc(インタラクティブモードについては以下を参照)、マニュアルはこちら

記憶法:best calculator(ただし、これbは実際にはbasicの場合です)。

$ echo 20+5/2 | bc
22
$ echo 'scale=4;20+5/2' | bc
22.5000

(任意精度の数値をサポート)


bcインタラクティブモード:

$ bc
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'. 
5+5
10

2.2+3.3
5.5

Rushのソリューションexpr(インタラクティブモードなし):

$ expr 20 + 5
25
$ expr 20 + 5 / 2
22

ジョシュアのソリューション:(awkインタラクティブモードなし):

$ calc() { awk "BEGIN{print $*}"; }
$ calc 1/3
0.333333

その他の多かれ少なかれポータブルなツール

Arcegeのソリューションdc(インタラクティブモード:)dc

逆ポーランド記法で動作するため、これはさらに楽しいです。

$ echo 20 5 2 / + p | dc 
22
$ echo 4 k 20 5 2 / + p | dc 
22.5000

ただし、逆ポーランド記法を頻繁に使用しない限り、実用的ではありません。

dc以前からbcbc歴史のラッパーとして実装されていますdcが、dcPOSIXによって標準化されませんでした


DQdimscalc(必須sudo apt-get install apcalc)

$ calc 2 + 4
6

汎用言語インタープリター:

manatworkのソリューションnode(インタラクティブモード:node;出力関数は不要):

$ node -pe 20+5/2  # Uses the power of JavaScript, e.g. : node -pe 20+5/Math.PI
22.5

Perl(インタラクティブモード:)perl -de 1

$ perl -E "say 20+5/2"
22.5

Python(インタラクティブモード:python;出力関数は不要):

$ python -c "print(20+5/2)"
22 # 22.5 with python3
$ python -c "print(20+5/2.0)"
22.5

任意精度の数値もサポートします。

$ python -c 'print(2**1234)'
295811224608098629060044695716103590786339687135372992239556207050657350796238924261053837248378050186443647759070955993120820899330381760937027212482840944941362110665443775183495726811929203861182015218323892077355983393191208928867652655993602487903113708549402668624521100611794270340232766099317098048887493809023127398253860618772619035009883272941129544640111837184

clispインストール済みの場合は、ポーランド語表記も使用できます。

$ clisp -x "(+ 2 2)"

マルコのソリューションlua(インタラクティブモード:)lua

$ lua -e "print(20+5/2)"
22.5

PHP(インタラクティブモード:)php -a

$ php -r 'echo 20+5/2;'
22.5

Ruby(インタラクティブモード:irb;出力関数は不要):

$ ruby -e 'p 20+5/2'
22
$ ruby -e 'p 20+5/2.0'
22.5

Guile(インタラクティブモード:)guile

$ guile -c '(display (+ 20 (/ 5 2)))'
45/2
$ guile -c '(display (+ 20 (/ 5 2.0)))'
22.5

S-Lang(インタラクティブモード:slsh;出力関数は不要、;ターミネーターのみ):

$ slsh -e 'printf("%f",20+5/2)'
22.000000
$ slsh -e 'printf("%f",20+5/2.0)'
22.500000

Tcl(インタラクティブモード:tclsh;出力関数は不要ですが、必要exprです):

$ tclsh <<< 'puts [expr 20+5/2]'
22
$ tclsh <<< 'puts [expr 20+5/2.0]'
22.5

Javascriptシェル:

$ smjs
js> 25/3
8.333333333333334
js>

$ jspl
JSC: 25/3

RP: 8.33333333333333
RJS: [object Number]
JSC:
Good bye...

$ node
> 25/3
8.333333333333334
>

さまざまなSQL:

SQLite(インタラクティブモード:)sqlite3

$ sqlite3 <<< 'select 20+5/2;'
22
$ sqlite3 <<< 'select 20+5/2.0;'
22.5

MySQLの

mysql -BNe 'select 1+1'

PostgreSQL

psql -tAc 'select 1+1

_mysqlとpostgresのオプションは「ascii art」イメージを停止します!

専門的な数学指向言語:

Rプレーンモード-1000の標準乱数を生成し、標準偏差を取得して印刷できます。

$ R -q -e 'print(sd(rnorm(1000)))'
> print(sd(rnorm(1000)))
[1] 1.031997

R使用littlerのスクリプトを-乗印刷パイをすることができます

$ r -e 'cat(pi^2, "\n")'
9.869604
$  r -e 'print(sum(1:100))'
[1] 5050

PARI / GP、数論、線形代数、その他多くのことのための広範なコンピューター代数システム

$ echo "prime(1000)"|gp -q
7919                        // the 1000th prime
$ echo "factor(1000)" | gp -q
[2 3]
[5 3]                       // 2^3*5^3
$ echo "sum(x=1,5,x)" | gp -q
15                          // 1+2+3+4+5

GNU Octave(高レベルのインタープリター言語、主に数値計算用)

複素数もサポートしています:

$ octave
>> 1.2 / 7
ans =  0.17143
>> sqrt(-1)
ans =  0 + 1i

科学および数値計算用の高性能言語およびインタープリター、ジュリア

非対話型オプション:

$ julia -E '2.5+3.7'
6.2

3
そしてbcは興味深い:whatis bc-> An arbitrary precision calculator language 面白い!ありがとう!
マイケルデュラント

@MichaelDurrantで編集を再修正してもらえますか、間違って拒否したに違いありませんか?
lgarzo

4
またdc、逆ポーランド記法で動作するため、さらに楽しいです。echo 20 5 + p | dc ただし、逆ポーランド記法を頻繁に使用しない限り、実用的ではありません。
アルセージュ

2
bcアプローチのバリエーションとして、次の関数(stackexchangeのどこかにある)を.bashrcファイルに追加しました。calc 2 + 3を入力して5を取得できます。- ## Command line calculator calc () { bc -l <<< "$@" }
ジョー

1
@クリス、魚は動いている標的です。math私たちが話しているように、彼らは彼らの新しいビルトイン(またはそれが現在呼ばれているもの)に取り組んでいます。編集してください。それは私の答えではなく、コミュニティwikiです。
ステファンシャゼル

35

計算には多くの方法があります。単純な式の場合、bashそれ自体を使用できます。

echo $((20+5))

またはexpr

expr 20 + 5

そして複雑な場合には素晴らしいツールがありますbc

echo "20+5" | bc

ところで、bcは、根、対数、cos、sinなどの非常に複雑な式でも計算できます。


expr受け入れられた回答にオプションを追加しました。受け入れて一元化するものを選択する必要がありました。
マイケルデュラント

3
実行しようとしていますexpr 20+5。数字とプラスの間にスペースを入力して、機能させる必要がありますexpr 20 + 5。それは重要です。
ラッシュ

24

前述のソリューションは、非常に単純な計算には適していますが、非常にエラーが発生しやすくなります。例:

# without spaces expr 20+5 produces literally 20+5
expr 20+5
 20+5

# bc's result doesn't give the fractional part by default
bc <<< 9.0/2.0
 4

# expr does only integer
expr 9 / 2
 4

# same for POSIX arithmetic expansion
echo $((9/2))
 4

# bash arithmetic expansion chokes on floats
echo $((9.0/2.0))
 bash: 9/2.0: syntax error: invalid arithmetic operator (error token is ".0")

# Most `expr` implementations also have problems with floats
expr 9.0 / 2.0
 expr: non-integer argument

最後のような構文エラーは簡単に気づかれますが、フロート部分が破棄された整数の応答は簡単に気付かれず、間違った結果につながる可能性があります。

そのため、私はいつもLuaのようなスクリプト言語を使用しています。ただし、使い慣れたスクリプト言語を選択できます。例としてLuaを使用します。利点は

  • おなじみの構文
  • おなじみの機能
  • おなじみの警告
  • 柔軟な入力
  • 通常、スペースは関係ありません
  • 浮動小数点出力

例:

lua -e "print(9/2)"
 4.5

lua -e "print(9 / 2)"
 4.5

lua -e "print(9.0/2)"
 4.5

lua -e "print (9 /2.)"
 4.5

lua -e "print(math.sqrt(9))"
 3

2
bcの結果は整数ではなく、に丸められscaleます。デフォルト値は0です。したがってbc <<< 'scale=4;9.0/2.0'、小数部が必要な場合。
マナトワーク

修正していただきありがとうございます。しかし、それでも間違いが起こりやすいです。数週間でscale使用する場合、追加することを覚えていbcますか?おそらくない。そして、恒久的に変更する方法があったとしても、デフォルトの設定でシステムを使用している場合は噛みつきます。
マルコ

3
個人的にはscalebc数年前に初めて会ったときのことを覚えています。しかし、私は常に出力機能では、かどうかを忘れてしまっluaていますputputs。;)
マナトワーク

bcをスクリプト言語の1つとして数えるだけです。私は常に整数の結果が必要かどうかを知っています-整数が大丈夫なら私はbashにとどまり、そうでなければbcを使う理由はめったにありません。luaの場合、-e、print、および括弧を覚えておく必要があります。
ユーザー不明

7
bc -l単純bcではなく常に使用してくださいscale
ダルカー

23

まだ誰もawkについて言及していませんか?

POSIXシェル関数とawk数学パワーを使用して、この(1行の)関数を定義するだけです。

calc(){ awk "BEGIN { print $*}"; }

次に、calc 1+1またはcalc 5/2

注:関数を常に使用可能にするには、〜/ .bashrc(または対応するシェルの起動ファイル)に追加します

もちろん、次の内容を持つ「calc」という名前の小さなスクリプト:

#!/bin/sh -
awk "BEGIN { print $* }"

動作する可能性もあります。


2
うわー、これは最高です、フロートもサポートしています。何もインストールしなくても動作します!
CMCDragonkai 14年

1
非常に良い、私は浮動比較をしたかった、ここで私はあなたの助けを借りてどのようにそれをしたのですか?a=0; b=0.0; if echo "$a" "$b" | awk '{ exit ($1 == $2) ? 0 : 1 }'; then echo 'equals'; else echo 'not equals'; fi
ポールトビアス

18

使用できますbc。例えば、

$ echo "25 + 5" | bc
30

別の方法でbc <<< 25+5も動作します。

または、1つの単純な計算以上のことを行いたい場合は、インタラクティブに:

$ bc
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'. 
25 + 5
30

GNUの実装はbc、stdinとstdoutの両方が端末に送られたときに、起動時にヘッダー/著作権情報を出力します。(GNU固有の)-qオプションでそれを抑制することができます。詳細については、bcのマニュアルページを参照してください。


1
パイプ( "|")とbsのインタラクティブモードオプションの両方に+1。1はいctrl-d終了しますか?
マイケルデュラント

1
@MichaelDurrantはい、^ Dがトリックを行いますquit
レヴォン

c () { bc -l <<< "$@" } c すばやく簡単に使用できる関数を定義します。例えばc 3/2、あなたに与えます1.50000000000000000000。その方法を説明した上記のリンクは死んでいます。
-ijoseph

1
@Levonのmanページのリンクは引き続き機能します。ただし、リンク:paweng.com/2008/08/15/unix-command-line-calculatorは、「このページはエイリアスの設定方法も示しています...」という文の「これ」のターゲットとして提供しています。デッド。
ijoseph

1
@ijosephありがとう.. 6年前のリンクへの参照を削除しました(リンクがブラウザでよりはっきりと表示されることを望みます-昨日見たときにも表示されませんでした)
レヴォン

16

以下を使用できますcalc

calc他の引数を指定せずに入力すると、インタラクティブモードに入り、計算を続けることができます。exitと入力してこれを終了します。

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.]

; 2+4
6
; 3+5
8
; 3.4+5
8.4
; 2^4
16
; exit

または、式を引数として使用し、答えを提供して終了します

$calc 2 + 4
    6
$

calcに似てbcいますが、デフォルトとして動作する方法が好きです


1
あなたが特に必要がない限り、対話モードを入力する必要はありませんに、例えば:calc -e '2+4; 3+5; 3.4+5; 2^4印刷物4本の出力ライン、または単にcalc -e 33+(3^3).. +1は、私は:)電卓のための「カルク」と呼ばれるものを使用してのアイデアが好き
Peter.O

1
-e式が1つしかない場合はオプションが不要であることに気づきました...きちんと!
。– Peter.O

10

私はPythonを起動し、それを対話型の計算機として使用するのが好きです(しかし、再び、私はPythonプログラマーです)。


私も!パイソンは私のスイスアーミーナイフ
レヴォン

screenPythonを実行するだけで、常に1つのウィンドウがあります。
アルセージュ

1
pythonpy(github.com/russell91/pythonpy)は、対話型シェルを起動することなく、これとpython構文で他のことを行う良い方法です:py '3.2 * 5' => 16
RussellStewart

私は、Pythonが好きそれはあなたがちょうどあなたのbashスクリプトのいくつかの場所で2つの数値を追加したい場合に重要となる起動時間だ
ndemou

@ndemou「インタラクティブ」計算機と言いました。また、スクリプトで十分に複雑なことをしている場合、ある時点で、bash以外(Pythonなど)を使用するように指示することにも注意する価値があります。
asmeurer

10

誰もそれについて言及していないので、厳密には計算機ではありませんが(これらの汎用スクリプト言語はすべてそうではありません)、言及したいと思いunitsます。

$ units "1 + 1"
        Definition: 2
$ units "1 lb" "kg"
        * 0.45359237
         / 2.2046226

または、出力を減らすため$()に、何かに割り当てるために使用する数字だけを取得できます。

$ units -t "1 + 1"
2
$ units -t "1 lb" "kg"
0.4539237

温度変換も行います

$ units -t "tempC(20)" "tempF"
68

さらに計算するために式で温度変換を取得するには、次のようにします。

$ units -t "~tempF(tempC(20))+1"
68.1

余分なプログラムをインストールする必要がない非常に多くのオプションがあるので、なぜそのようにしたいのかわかりません。
ndemou

@ndemouいくつかのディストリビューションにはデフォルトでインストールされています...これらの答えの多くはそうではありません。そして、あなたは本当に5歳の答えにそれをコメントする必要がありましたか?
Random832

1
私が反対票を投じるときにコメントするのは良いことだと思うし、SEによって奨励されている慣行でもあるので、なぜ5年が重要なのかはわからない。同じコメントがすべての同様の回答に適用されます-個人的なものはありません。(BTWも、最もあいまいなプログラムが上のデフォルトでインストールすることが可能いくつかのディストリビューションこの場合、私は最近のDebian、Ubuntuの、CentOSのとRedHatののインストールと単位をテストしてみたではありません。)
ndemou

6
$> ghc -e '20 + 5'
25
it :: Integer

またghci、それはインタラクティブモードのGlasgow-Haskellコンパイラghc --interactiveで式を評価するのとは対照的に-e)で、魅力的な「計算機」を作成します。

$>ghci
GHCi, version 7.8.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> pi
3.141592653589793
Prelude> ceiling pi
4
Prelude> compare 1 2
LT

3
それはghcGlasgow Haskell Compiler を意味していますか?
マナトワーク

thxをインストールする必要があるプログラムに合格します。
マイケルデュラント

4

「JavaScriptの力」を読むことは信じられません(もちろん、perlを除いて、他の部分の答えを支持しなければなりませんでした。

実際には、整数演算で十分な単純な場合には、ビルドイン$((...))を使用して推奨します。それ以外の場合、ほとんどすべての場合、エコー "..." | bcで十分です。

統計、行列演算などの一部の算術演算Rの方が優れたツールです。

echo 25 + 5 | R --vanilla

また、小さなデータセットやグラフィカルな破棄結果にoocalcは、便利なユーティリティです。


4

私はpython式を評価して結果を出力する小さなpythonスクリプトを使用します。

$ pc '[i ** 2 for i in range(10)]'
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

スクリプトは次のとおりです。

#!/usr/local/bin/python3

import sys
import traceback
from codeop import CommandCompiler

compile = CommandCompiler()
filename = "<input>"
source = ' '.join(sys.argv[1:]) + '\n'

try:
    code = compile(source, filename) 
except (OverflowError, SyntaxError, ValueError):
    type, value, sys.last_traceback = sys.exc_info()
    sys.last_type = type
    sys.last_value = value
    if filename and type is SyntaxError:
        # Work hard to stuff the correct filename in the exception
        try:
            msg, (dummy_filename, lineno, offset, line) = value.args
        except ValueError:
            # Not the format we expect; leave it alone
            pass
        else:
            # Stuff in the right filename
            value = SyntaxError(msg, (filename, lineno, offset, line))
            sys.last_value = value
    lines = traceback.format_exception_only(type, value)
    print(''.join(lines))
else:
    if code:
        exec(code)
    else:
        print('incomplete')

残念ながら、ほとんどのコードをどこから借りたのか覚えていないので、引用することはできません。


ないとprint(eval(' '.join(sys.argv[1:])))同じことを行いますか?
g.rocket 14年

あなたはここでフライを打つためにハンマーを使用している
ndemou

4

ヌープロット

gnuplot-対話型のプロットプログラム
上記のリンクに従うかgnuplot、プロンプトから gnuplotインタープリターhelp内に入力します。Gnuplotはデータをプロットするために生まれたプログラムですが、計算にも使用できます。関数を定義したり、組み込み関数を使用したりできるという利点があります。

echo  "pr 20+5/2"  |  gnuplot          #  Lazy-note `pr` instead of print
22                                     #  Integer calculation & result
echo  "pr 20.+5/2"  |  gnuplot         #  Lazy-note `pr` instead of print
22.0                                   #  Floating point result
echo  "pr sin(2*pi/3.)"  |  gnuplot    #  Some functions ...
0.866025403784439

ルート(または他のCインタープリター

ROOTシステムは非常に効率的な方法で大量のデータを処理し、分析するために必要なすべての機能を持つオブジェクト指向のフレームワークのセットを提供しています...

CインタープリターCINTとして使用するか、他の多くのCインタープリターの 1つを使用できます。私見、それは巨大で、複雑で、強力で、常に友好的ではありませんが、大きな満足を与えることもできます。

あなたは本当に引き合いに出して、あなたの内側小さな声聞きたくない場合はConfucioを、あなたは準備ができている(バター)を破ることをホイールに飛ぶに使用できるルートを。この場合、-lスプラッシュ画面の表示を避けるために必須です...

echo  "20+5/2"   | root -l
(const int)22
echo  "20+5/2."  | root -l
(const double)2.25000000000000000e+01

echo  "cout<< 20+5/2 << endl;"   | root -l
22

4

整数演算の場合(3/2 = 1の場合)

  • bash echo $(( 1+1 ))
  • fish math 1+1
  • zsh* echo $((1+1))

*:およびksh93、yash

浮動小数点演算の場合(3/2 = 1.5の場合)

  • bash awk "BEGIN {print 10/3}" (低精度)
  • bash echo "10/3"|bc -l (高精度)
  • fish math -s4 10/3
  • zsh* echo $((10./3))

*:およびksh93、yash

もちろん、最小限のタイピングでawkを使用するようにシェルを設定できますcalc 10/3(bash 1とfish 2でそれを行う方法に関する注意を参照してください)。

bashにawkを推奨する主な理由は、ほとんどすべてのUnixライクなOSにプリインストールされており、bc -l10進数で20を印刷するよりも正確ではないがより人間に優しい出力で、かなり軽い(もちろんプロセスを開始するコストがかかる)ことです桁数(確かにawkを微調整してさらに小数桁を取得できます)。


ノート

(1)bashで簡略化された構文を使用する方法

このbash関数をに追加します~/.bashrc

calc(){ awk "BEGIN { print $*}"; }

(2)単純化された構文を魚で使用する方法

calcfish関数(つまり、という名前のテキストファイル/home/ndemou/.config/fish/functions/calc.fish)を作成します。

function calc
    awk "BEGIN{ print $argv }" ;
end

awkシステムのdouble浮動小数点型を使用するため、任意の精度を実行しない他のほとんどのツールと同じくらい正確になります(gawkは任意の精度を実行できることに注意してください)。変数をawk使用して、OFMT数値を出力用の文字列表現に変換します(%.6gデフォルトでは、%.17gより高い精度が必要な場合は、それを変更できます)。
ステファンシャゼラス

fish's mathbc変更するために)を呼び出すだけの関数であることに注意してください
ステファンシャゼル

1
まあ、それはを呼び出す関数でしたbc。もはや機能しmath "scale=4; 10/3"なくなるような新しいバージョンではなくなりました(math -s4 10/3代わりに今)
ステファンシャゼル

ありがとう、ステファン・チャゼラス-回答を更新しました(math -s4古いバージョンでもサポートされているようです)
ndemou

3

コンソールの計算には、を使用しますconcalc。(sudo aptitude install concalc

その後、concalc 入力してEnterキーを押します。プロンプトは表示されませんが、計算(スペースなし)を入力してEnterキーを押すだけで、次の行に数値が表示されます。


3

SQLite

echo 'select 1 + 1;' | sqlite3 

MySQLの

mysql -e 'select 1 + 1 from dual;'

PostgreSQL

psql -c 'select 1 + 1 as sum;'

3
言及する価値があるいくつかのマイナーな詳細:1)はfrom dual、Oracleによって必要とされ、MySQLはすることができselectずにfrom句。2)PostgreSQLはエイリアスを必要としません。3);はSQLiteでのみ必要です。4)MySQLとPostgreSQLは、データベースサーバーに接続できる場合にのみ機能します。5)MySQLとPostgreSQLは、結果の周りにASCIIアートテーブルを描画します。値のみを取得するには:mysql -BNe 'select 1+1'およびpsql -tAc 'select 1+1
マナトワーク

2

提供されたプログラムを介して、GNU Multiple Precision Arithmetic Libraryを使用しますrun-expr

  • ダウンロードして解凍します(lzipが必要です): tar -xvf gmp-5.1.3.tar.lz
  • トップディレクトリで、./configureおよびmake(インストールする必要はありません)
  • demos / exprで、 make run-expr
  • ~/binディレクトリにシンボリックリンクを作成するのが好きです。ln -s /path/to/gmp/demos/expr/run-expr ~/bin/run-expr
  • 簡単に使用できるようにエイリアスを追加します。たとえばalias calcf='run-expr -f'、浮動小数点評価用

出力:

# calcf '2/3'
"2/3" base 0: result 0.666666666666666666667e0

run-expr.cファイルから:

Usage: ./run-expr [-z] [-q] [-f] [-p prec] [-b base] expression...

   Evaluate each argument as a simple expression.  By default this is in mpz
   integers, but -q selects mpq or -f selects mpf.  For mpf the float
   precision can be set with -p.  In all cases the input base can be set
   with -b, or the default is "0" meaning decimal with "0x" allowed.

関数クラスの違いと詳細については、マニュアルを参照してください。

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