Ada banyak pilihan!!!
Ringkasan
$ 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
Detail
Kerang
Anda dapat menggunakan ekspansi aritmatika POSIX untuk aritmatika integerecho "$((...))"
:
$ echo "$((20+5))"
25
$ echo "$((20+5/2))"
22
Quite portable ( ash dash yash bash ksh93 lksh zsh
):
Menggunakan kemampuan printf untuk mencetak floats, kami dapat memperluas sebagian besar shell untuk melakukan matematika floating point meskipun dengan rentang terbatas (tidak lebih dari 10 digit):
$ printf %.10f\\n "$((1000000000 * 20/7 ))e-9"
2.8571428570
ksh93
, yash
dan zsh
lakukan dukungan mengapung di sini:
$ echo "$((1.2 / 3))"
0.4
hanya ksh93
(langsung) dan zsh
memuat fungsi perpustakaan perpustakaan di sini:
$ echo "$((4*atan(1)))"
3.14159265358979324
( zsh
perlu memuat zmodload zsh/mathfunc
untuk mendapatkan fungsi seperti atan
).
Secara interaktif dengan zsh:
$ autoload zcalc
$ zcalc
1> PI/2
1.5708
2> cos($1)
6.12323e-17
3> :sci 12
6.12323399574e-17
Dengan (t) csh (hanya bilangan bulat):
% @ a=25 / 3; echo $a
8
Dalam rc
keluarga shell, akanga
adalah satu dengan ekspansi aritmatika:
; echo $:25/3
8
Toolest POSIX
bc
(lihat di bawah untuk mode interaktif), manual di sini
Mnemonic: best calculator (meskipun b
sebenarnya untuk dasar ).
$ echo 20+5/2 | bc
22
$ echo 'scale=4;20+5/2' | bc
22.5000
(mendukung angka presisi acak)
mode interaktif 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
Solusi Rush , expr
(tanpa mode interaktif):
$ expr 20 + 5
25
$ expr 20 + 5 / 2
22
Solusi Joshua : awk
(tidak ada mode interaktif):
$ calc() { awk "BEGIN{print $*}"; }
$ calc 1/3
0.333333
Alat portabel lainnya kurang lebih
Solusi Arcege , dc
(mode interaktif :)dc
:
Yang bahkan lebih menyenangkan karena ia bekerja dengan notasi polish terbalik.
$ echo 20 5 2 / + p | dc
22
$ echo 4 k 20 5 2 / + p | dc
22.5000
Tetapi tidak praktis jika Anda tidak banyak bekerja dengan notasi polish terbalik.
Perhatikan bahwa ada dc
sebelum bc
dan bc
telah secara historis diterapkan sebagai pembungkus dc
tetapi dc
tidak dibakukan oleh POSIX
DQdims 's calc
(diperlukan sudo apt-get install apcalc)
:
$ calc 2 + 4
6
Penerjemah bahasa tujuan umum:
solusi manatwork , node
(mode interaktif :;node
fungsi output tidak diperlukan):
$ node -pe 20+5/2 # Uses the power of JavaScript, e.g. : node -pe 20+5/Math.PI
22.5
Perl (mode interaktif:) perl -de 1
:
$ perl -E "say 20+5/2"
22.5
Python (mode interaktif python
:; fungsi output tidak diperlukan):
$ python -c "print(20+5/2)"
22 # 22.5 with python3
$ python -c "print(20+5/2.0)"
22.5
Juga mendukung angka presisi acak:
$ python -c 'print(2**1234)'
295811224608098629060044695716103590786339687135372992239556207050657350796238924261053837248378050186443647759070955993120820899330381760937027212482840944941362110665443775183495726811929203861182015218323892077355983393191208928867652655993602487903113708549402668624521100611794270340232766099317098048887493809023127398253860618772619035009883272941129544640111837184
Jika sudah clisp
menginstal, Anda juga dapat menggunakan notasi semir:
$ clisp -x "(+ 2 2)"
Solusi Marco , lua
(mode interaktif:) lua
:
$ lua -e "print(20+5/2)"
22.5
PHP (mode interaktif:) php -a
:
$ php -r 'echo 20+5/2;'
22.5
Ruby (mode interaktif irb
:; fungsi output tidak diperlukan):
$ ruby -e 'p 20+5/2'
22
$ ruby -e 'p 20+5/2.0'
22.5
Tipu muslihat (mode interaktif :)guile
:
$ guile -c '(display (+ 20 (/ 5 2)))'
45/2
$ guile -c '(display (+ 20 (/ 5 2.0)))'
22.5
S-Lang (mode interaktif slsh
:; fungsi output tidak diperlukan, hanya ;
terminator):
$ slsh -e 'printf("%f",20+5/2)'
22.000000
$ slsh -e 'printf("%f",20+5/2.0)'
22.500000
Tcl (mode interaktif tclsh
:; fungsi output tidak diperlukan, tetapi expr
adalah):
$ tclsh <<< 'puts [expr 20+5/2]'
22
$ tclsh <<< 'puts [expr 20+5/2.0]'
22.5
Kerang 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
>
Berbagai SQL:
SQLite (mode interaktif:) 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
_Pilihan pada mysql dan postgres menghentikan gambar 'ascii art'!
Bahasa berorientasi matematika khusus:
R dalam mode biasa - memungkinkan menghasilkan 1000 angka acak Normal dan mendapatkan simpangan baku dan mencetaknya
$ R -q -e 'print(sd(rnorm(1000)))'
> print(sd(rnorm(1000)))
[1] 1.031997
R menggunakan skrip littler - memungkinkan cetak pi kuadrat
$ r -e 'cat(pi^2, "\n")'
9.869604
$ r -e 'print(sum(1:100))'
[1] 5050
PARI / GP , sistem aljabar komputer yang luas untuk teori bilangan, aljabar linier, dan banyak hal lainnya
$ 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 (bahasa interpretasi tingkat tinggi, terutama ditujukan untuk perhitungan numerik)
Juga mendukung bilangan kompleks:
$ octave
>> 1.2 / 7
ans = 0.17143
>> sqrt(-1)
ans = 0 + 1i
Julia , bahasa kinerja tinggi dan juru bahasa untuk komputasi ilmiah dan numerik.
Opsi non-interaktif:
$ julia -E '2.5+3.7'
6.2
bc
, mungkin ada baiknya Anda membaca tentang-l
opsi di halaman manual.