使用echo "20+5"确实会产生文本“ 20+5”。

我可以使用什么命令来获取数字和25

另外,最简单的方法是只是使用bash进行浮动
?例如,echo $((3224/3807.0))打印0 :(。

我正在使用基本命令外壳程序('command
line')本身或使用
命令行。

评论

如果要使用bc,可能值得花些时间在手册页中阅读-l选项。

我以为作者正在要求bash命令行,而答案都倾向于多样化到各种脚本语言。

猛男→/ expression

@zinking好吧,bash旨在方便地调用大量其他其他脚本语言的解释器。

我真的不喜欢问题的这一部分“ ...或其他语言/框架?”打开了地狱之门,可以回答各种语言/框架。

#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


ksh93yashzsh在此处支持浮点数:
$ 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早于dcdc一直作为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+1calc 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
$


calcbc类似,我喜欢它表现得更好的默认方式

评论


除非特别需要,否则不需要进入交互模式,例如: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 楼

Gnuplot

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系统提供了一组具有所有功能的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

在顶部目录./configuremake(无需安装)
在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