echo "20+5"
确实会产生文本“ 20+5
”。我可以使用什么命令来获取数字和
25
?另外,最简单的方法是只是使用bash进行浮动
?例如,
echo $((3224/3807.0))
打印0
:(。我正在使用基本命令外壳程序('command
line')本身或使用
命令行。
#1 楼
有很多选择!!!摘要
$ printf %.10f\n "$((10**9 * 20/7))e-9" # many shells. Not mksh.
$ echo "$((20.0/7))" # (ksh93/zsh/yash, some 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
$ gs -q <<< "5 2 div 20 add ="
详细信息
您可以对整数算术
echo "$((...))"
使用POSIX算术扩展: /> 相当便携(
ash dash yash bash ksh93 lksh zsh
):使用printf打印浮点的能力,我们可以扩展大多数外壳以进行浮点数学运算,尽管范围有限(不超过10位数字):
$ echo "$((20+5))"
25
$ echo "$((20+5/2))"
22
ksh93
,yash
和zsh
在此处支持浮点数:$ printf %.10f\n "$((1000000000 * 20/7 ))e-9"
2.8571428570
仅
ksh93
(直接)和zsh
加载库mathfunc在这里:$ echo "$((1.2 / 3))"
0.4
zsh需要加载
zmodload zsh/mathfunc
以获得类似atan
的功能。)与zsh交互:
$ echo "$((4*atan(1)))"
3.14159265358979324
使用(t)csh(仅整数):
$ autoload zcalc
$ zcalc
1> PI/2
1.5708
2> cos()
6.12323e-17
3> :sci 12
6.12323399574e-17
在
rc
shell系列中,akanga
是具有算术扩展的那个: ,此处的手册助记符:最佳计算器(第Q4312079q实际上是基本的)。
% @ a=25 / 3; echo $a
8
(支持任意精度数字)
bc交互模式:
; echo $:25/3
8
Rush解决方案
bc
(无交互模式):$ echo 20+5/2 | bc
22
$ echo 'scale=4;20+5/2' | bc
22.5000
Joshua解决方案:
b
(无交互模式):$ 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
其他或多或少的便携式工具
Arcege的解决方案
expr
(交互模式:awk
):它更有趣,因为它通过反向抛光表示法起作用。
$ expr 20 + 5
25
$ expr 20 + 5 / 2
22
,但是除非您使用反向抛光表示法,否则它不实用。
请注意,
dc
早于dc
和dc
一直作为bc
的包装器实现,但POSIX并未对bc
进行标准化DQdims的
dc
(必需dc
:$ calc() { awk "BEGIN{print $*}"; }
$ calc 1/3
0.333333
< br通用语言解释器:manatwork的解决方案,calc
(交互模式:sudo apt-get install apcalc)
;输出功能不需要):$ echo 20 5 2 / + p | dc
22
$ echo 4 k 20 5 2 / + p | dc
22.5000
Perl(交互模式:
node
):$ calc 2 + 4
6
Python(交互模式:
node
;不需要输出函数):$ node -pe 20+5/2 # Uses the power of JavaScript, e.g. : node -pe 20+5/Math.PI
22.5
还支持任意精度数字:
$ perl -E "say 20+5/2"
22.5
如果已安装
perl -de 1
,还可以使用波兰语表示法:$ python -c "print(20+5/2)"
22 # 22.5 with python3
$ python -c "print(20+5/2.0)"
22.5
Marco的解决方案,
python
(交互模式:clisp
):$ python -c 'print(2**1234)'
295811224608098629060044695716103590786339687135372992239556207050657350796238924261053837248378050186443647759070955993120820899330381760937027212482840944941362110665443775183495726811929203861182015218323892077355983393191208928867652655993602487903113708549402668624521100611794270340232766099317098048887493809023127398253860618772619035009883272941129544640111837184
PHP(交互模式:
lua
):$ clisp -x "(+ 2 2)"
Ruby(交互模式:
lua
;输出不需要功能):$ lua -e "print(20+5/2)"
22.5
Guile(交互模式:
php -a
):$ php -r 'echo 20+5/2;'
22.5
S-Lang(交互模式:
irb
;输出功能不需要,只是一个guile
终止符):$ ruby -e 'p 20+5/2'
22
$ ruby -e 'p 20+5/2.0'
22.5
Tcl(交互模式:
slsh
;不需要输出功能,但是;
是): /> Javascript外壳:$ guile -c '(display (+ 20 (/ 5 2)))'
45/2
$ guile -c '(display (+ 20 (/ 5 2.0)))'
22.5
各种SQL:
SQLite(交互模式:q43 12079q):
$ slsh -e 'printf("%f",20+5/2)'
22.000000
$ slsh -e 'printf("%f",20+5/2.0)'
22.500000
MySQL:
$ tclsh <<< 'puts [expr 20+5/2]'
22
$ tclsh <<< 'puts [expr 20+5/2.0]'
22.5
PostgreSQL:
$ 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
>
面向数学的专业语言:
普通模式下的R-可以生成1000个正常随机数并获得标准差并打印
$ sqlite3 <<< 'select 20+5/2;'
22
$ sqlite3 <<< 'select 20+5/2.0;'
22.5
使用littler脚本进行R-可以打印平方pi
mysql -BNe 'select 1+1'
PARI / GP,这是一个广泛的计算机代数系统,用于数论,线性代数和许多其他事物
psql -tAc 'select 1+1
GNU Octave(一种高级解释语言,主要用于数值计算)
还支持复数:
$ R -q -e 'print(sd(rnorm(1000)))'
> print(sd(rnorm(1000)))
[1] 1.031997
朱莉娅,高用于科学和数值计算的性能语言和解释器。
非交互式选项:
$ r -e 'cat(pi^2, "\n")'
9.869604
$ r -e 'print(sum(1:100))'
[1] 5050
GhostScript
GhostScript是PostScript解释器,即使在非常老的版本中也很常见发行版。
有关受支持的数学命令的列表,请参见PostScript文档。
交互式示例:
$ 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
评论
和bc很有趣:whatis bc->任意精度的计算器语言有趣!谢谢!
–迈克尔·杜兰特(Michael Durrant)
2012年6月14日14:48在
还有dc,因为它采用反向抛光表示法,所以更有趣。回声20 5 + p | dc但是不实用,除非您经常使用反向抛光符号。
–Arcege
2012年6月14日15:11
@ lgarzo,@ MichaelDurrant,我做了一些更改:1)统一示例:对我不知道的工具保留旧的表达式;保留原始20 + 5表达式,其中不支持浮点;增加了20 + 5/2表达式;其中20 + 5/2产生整数/舍入结果,并添加了浮点替代。 2)由于该问题被标记为交互式,因此添加了有关如何以交互式模式启动该工具的信息。 3)如果表达式的结果以交互模式自动显示(例如:20 + 5与打印20 + 5),请添加注释“不需要输出功能”。希望您现在也发现它更清洁。
–manatwork
2012年6月16日10:31
作为bc方法的一种变体,我在.bashrc文件中添加了以下函数(在stackexchange上的某处找到)。我只需输入calc 2 + 3并得到5。##命令行计算器calc(){bc -l <<<“ $ @”}
–乔
2012年6月16日18:59
@克里斯,鱼是一个移动的目标。正如我们所说的,他们正在研究内置的新数学(或现在所说的什么)。随时编辑。这不是我的答案,而是社区Wiki。
–StéphaneChazelas
17年12月20日在21:18
#2 楼
有许多种计算方法。对于简单表达式,您可以使用
bash
本身:echo $((20+5))
或
expr
:expr 20 + 5
对于复杂的情况,有个很棒的工具
bc
:echo "20+5" | bc
Btw,bc甚至可以计算具有根,对数,cos,罪恶等等。
评论
我将您的expr选项添加到了接受的答案中。只好挑选一个接受并集中。
–迈克尔·杜兰特(Michael Durrant)
2012年6月14日15:11
您正在尝试执行expr 20 + 5。您需要在数字和加号之间键入空格以使其起作用:expr 20 +5。这很重要。
–急
2012年6月22日14:14
#3 楼
还没有人提到awk吗?使用POSIX shell函数和awk数学功能,只需定义以下(一行)函数即可:
calc(){ awk "BEGIN { print $*}"; }
然后只需执行
calc 1+1
或calc 5/2
之类的操作注意:要使该功能始终可用,请将其添加到〜/ .bashrc(或您相应的Shell的启动文件)中。
当然,一个名为“ calc”的小脚本,其内容如下:
#!/bin/sh -
awk "BEGIN { print $* }"
也可以工作。
评论
哇,这是最好的,甚至支持浮点数。它无需安装任何东西即可工作!
– CMCDragonkai
2014年6月4日在2:40
很好,我想进行浮动比较,这是我在您的帮助下进行的操作:a = 0; b = 0.0;如果echo“ $ a”“ $ b” | awk'{exit($ 1 == $ 2)吗? 0:1}';然后回显“等于”;否则回声“不等于”;科幻
– Paul Tobias
2015年12月1日下午6:55
📦作为命令:gitlab.com/es20490446e/calc
– Alberto Salvia Novella
3月31日9:50
#4 楼
提到的解决方案适用于非常简单的计算,但容易出错。示例:# 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
很容易注意到像最后一个语法错误,但是带有丢弃的float部分的整数响应很容易被忽略,并导致错误的结果。
,这就是为什么我总是使用像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
评论
bc的结果不是整数,而是按比例取整,默认值为0。因此,如果要小数部分,bc <<<'scale = 4; 9.0 / 2.0'。
–manatwork
2012年6月14日下午16:16
感谢您的更正。但是仍然容易出错。如果我在几周内使用BC,我会建议增加规模吗?可能不会。而且即使您有永久更改它的方法,但是如果您使用默认设置的系统,它也会咬您。
–马可
2012年6月14日下午16:26
就我个人而言,我确实记得自从几年前第一次见面以来的规模问题。但是我总是忘记lua中的输出函数是put还是puts。 ;)
–manatwork
2012年6月14日在17:06
只需将bc视为脚本语言之一。我总是知道我是否需要整数结果-如果整数还可以,我会继续使用bash,否则我很少有理由使用bc。对于lua,您必须记住-e,print和括号。
–用户未知
2012年6月14日在21:39
只需始终使用bc -l而不是纯bc,然后再不必担心规模。
–Dalker
13年5月1日在19:54
#5 楼
您可以使用bc
。例如,$ echo "25 + 5" | bc
30
或者
bc <<< 25+5
也可以使用。 $ 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
当stdin和stdout都进入终端时,
bc
的GNU实现在启动时会打印该标头/版权信息。您可以使用(特定于GNU的)-q
选项禁止显示它。有关更多信息,请参见bc手册页评论
管道(“ |”)和BS的交互模式选项均为+1。是否有一个ctrl-d退出?
–迈克尔·杜兰特(Michael Durrant)
2012年6月14日14:49
@MichaelDurrant是的,^ D将成功,因为退出
–莱文
2012年6月14日14:50
c(){bc -l <<<“ $ @”}将定义一个函数c,以便快速轻松地使用。例如c 3/2将给您1.50000000000000000000。上面描述如何执行此操作的链接已失效。
– ijoseph
18年8月1日在18:59
@Levon手册页链接仍然有效。但是,出现链接:paweng.com/2008/08/15/unix-command-line-calculator,您在句子“此页面还显示了如何设置别名…”中将其作为“ This”的目标。死。
– ijoseph
18年8月1日在22:30
@ijoseph谢谢..我删除了对该6岁链接的引用(希望这些链接在浏览器中更清楚地显示-昨天看时甚至没有看到它)
–莱文
18年8月2日在12:48
#6 楼
您可以使用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
类似,我喜欢它表现得更好的默认方式评论
除非特别需要,否则不需要进入交互模式,例如:calc -e'2 + 4; 3 + 5; 3.4 + 5; 2 ^ 4打印4条输出行,或者只是calc -e 33+(3 ^ 3).. +1我喜欢将称为“ calc”的东西用于计算器的想法:)
– Peter.O
2012年6月14日18:47
我刚刚意识到,当只有一个表达式时,不需要-e选项。
– Peter.O
2012年6月15日在1:19
#7 楼
我喜欢启动Python并将其用作交互式计算器(但同样,我是Python程序员)。评论
我也是! Python是我的瑞士军刀
–莱文
2012年6月14日23:47
我总是在屏幕上只有一个窗口运行Python。
–Arcege
2012年6月15日18:54
pythonpy(github.com/russell91/pythonpy)是使用python语法执行此操作和其他操作的好方法,而无需启动交互式shell:py'3.2 * 5'=> 16
–拉塞尔·斯图尔特(RussellStewart)
2014-09-13 6:30
我喜欢python,但是如果您只想在bash脚本的几个位置添加两个数字,那么启动时间就很重要
– ndemou
17年9月17日上午10:30
@ndemou我说过“交互式”计算器。尽管还需要注意的是,如果您在脚本中执行了足够复杂的操作,但明智的做法还是决定您使用bash之外的其他工具(例如Python)。
– asmeurer
17年9月18日在20:20
#8 楼
既然没有人提到过它,尽管它并不是严格意义上的计算器(但所有这些通用脚本语言也不都是),所以我想提一下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
17年9月17日在10:29
@ndemou它是默认安装在某些发行版上的……而其他许多答案都没有。您是否真的需要针对已有五年历史的答案发表评论?
–Random832
17年9月17日在20:27
我认为当我拒绝投票时最好发表评论,这也是S.E.鼓励的一种做法。我不明白为什么五年很重要。相同的评论适用于所有类似的答案-不涉及个人。 (顺便说一句,即使是最晦涩的程序也可以默认安装在某些发行版上。在这种情况下,我已经测试了Debian,Ubuntu,CentOS和RedHat的最新安装,而没有测试过)
– ndemou
17年9月18日在13:44
#9 楼
$> 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
评论
ghc代表Glasgow Haskell编译器吗?
–manatwork
2012年6月15日下午7:32
传递我需要安装的程序,但要谢谢。
–迈克尔·杜兰特(Michael Durrant)
2012年6月21日14:07
#10 楼
对于整数算术(其中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
您当然可以将shell配置为与awk一起使用最小的输入像
calc 10/3
(请参阅有关如何对bash1和fish2进行操作的注释)。当然,与打印43个十进制数字的bc -l
相比,精确度较低但对人类更友好的输出是开始一个过程的成本(尽管您当然可以调整awk以获得更多的十进制数字)。 /> 注意事项
(1)如何在bash中使用简化语法
将此bash函数添加到您的
~/.bashrc
中:calc(){ awk "BEGIN { print $*}"; }
(2)如何在fish中使用简化语法
创建
calc
fish函数(即一个名为/home/ndemou/.config/fish/functions/calc.fish
的文本文件):function calc
awk "BEGIN{ print $argv }" ;
end
评论
awk将使用系统的双浮点类型,因此它将与大多数其他不做任意精度的工具一样精确(请注意gawk可以做任意精度)。 awk使用OFMT变量将数字转换为它们的字符串表示形式以进行输出(默认情况下为%.6g,您可能希望将其更改为%.17g是要获得更高的精度)。
–StéphaneChazelas
17年9月18日在19:33
请注意,fish的数学运算只是一个调用bc的函数(尽管会有所变化)
–StéphaneChazelas
17年9月18日在19:37
嗯,这是一个调用bc的函数。在较新的版本中不再可用,在该版本中,诸如“ scale = 4; 10/3”之类的数学运算不再起作用(现在是-s4 10/3)
–StéphaneChazelas
17/12/20在22:39
感谢StéphaneChazelas-我已经更新了答案(旧版本中也支持-s4)
– ndemou
18年1月1日,下午1:32
#11 楼
Gnuplotgnuplot-交互式绘图程序
按照上面的链接或在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系统提供了一组具有所有功能的OO框架。需要以非常有效的方式处理和分析大量数据...
您可以将其用作C解释器CINT,或者可以使用许多其他C语言中的一种口译员。恕我直言,它庞大,复杂,功能强大,并不总是友好的,但也可以带来极大的满足感。
如果您真的不想听自己内部引述Confucio的小声音,并且准备打破方向盘上的(黄油)飞蝇,则可以使用root。在这种情况下,
-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
#12 楼
对于控制台计算,我使用concalc
。 (sudo aptitude install concalc
)之后,只需键入
concalc
并按Enter。它不会提供提示,而只需输入您的计算(不带空格)并按Enter,然后在下一行上,它将为您提供数值。#13 楼
我不敢相信会读到“ JavaScript的威力”(但是我不得不对其他部分的答案表示赞同,当然除了perl。)实际上,对于整数算术就足够的简单情况,我使用buildin $((...))并推荐它。否则,在几乎所有情况下,echo“ ...” | bc就足够了。
对于某些算术运算,如统计量,矩阵
R
是更好的工具:echo 25 + 5 | R --vanilla
对于小型数据集和图形丢弃结果,
oocalc
是一个不错的实用程序。#14 楼
我使用了一个小的python脚本,该脚本将评估python表达式并打印结果,然后我可以运行类似的命令,例如:$ pc '[i ** 2 for i in range(10)]'
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
不幸的是,我不记得我从哪里借来了大部分代码,因此我无法引用。
评论
不会打印(eval(''.join(sys.argv [1:])))做同样的事情吗?
–加文·扬西(Gavin S. Yancey)
14-10-8在5:02
您正在用锤子击打苍蝇
– ndemou
17年9月17日上午10:32
#15 楼
SQLite:echo 'select 1 + 1;' | sqlite3
MySQL:
mysql -e 'select 1 + 1 from dual;'
PostgreSQL:
psql -c 'select 1 + 1 as sum;'
评论
值得一提的一些小细节:1)Oracle需要使用double,MySQL可以选择不使用from子句。 2)PostgreSQL不需要别名。 3);只有SQLite才需要。 4)MySQL和PostgreSQL仅在能够连接到数据库服务器时才能工作。 5)MySQL和PostgreSQL将在结果周围绘制ASCII艺术表。仅获取值:mysql -BNe'选择1 + 1'和psql -tAc'选择1 + 1。
–manatwork
2012年6月16日的15:00
#16 楼
通过提供的run-expr
程序使用GNU多精度算术库:下载并解压缩(您将需要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.
有关功能类的区别和详细信息,请参见手册。
#17 楼
这里的其余解决方案都有明显的缺点。因此,我创建了一个新命令,能够以最简单,最可靠的方式执行此操作。
包装,但通过使行为可预测。输入更灵活,功能无法解决时实际崩溃。
示例:
$ solve 1/5
0.2
$ solve 1.5+3.1
4.6
$ solve 1/1000000
1e-06
$ solve 7+2^3
15
$ solve "sqrt(8)"
2.82842712474619
$ solve 1/0
non solvable 🤯: 1/0
源代码
吃豆子仓库
评论
@Jeff Schaller不要删除没有任何反馈的帖子。
– Alberto Salvia Novella
5月19日21:00
评论
如果要使用bc,可能值得花些时间在手册页中阅读-l选项。我以为作者正在要求bash命令行,而答案都倾向于多样化到各种脚本语言。
猛男→/ expression
@zinking好吧,bash旨在方便地调用大量其他其他脚本语言的解释器。
我真的不喜欢问题的这一部分“ ...或其他语言/框架?”打开了地狱之门,可以回答各种语言/框架。