我正在寻找兼容Linux的基于TTY的计算器。例如:
user@host:~$ calculate
> 2
2
user@host:~$ calculate
> 8*6-4
44
user@host:~$ calculate
> 8*(6-4)
16
是否有这样的东西支持基本操作,某些内置功能(如atan()
)以及可能通过脚本编写的自定义功能?
我正在寻找兼容Linux的基于TTY的计算器。例如:
user@host:~$ calculate
> 2
2
user@host:~$ calculate
> 8*6-4
44
user@host:~$ calculate
> 8*(6-4)
16
是否有这样的东西支持基本操作,某些内置功能(如atan()
)以及可能通过脚本编写的自定义功能?
Answers:
bc
和dc
是2个计算器是需要从终端接入时,我会经常使用。
$ 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'.
然后,您可以输入问题:
2
2
5+5
10
完成后,您可以使用Ctrl+ 退出C。
这些计算器功能丰富。
缩放
scale=5
193 * 1/3
64.33333
方程式
principal=100
ir = 0.05
years = 5
futurevalue = principal * (1 + ir)^years
futurevalue
127.62800
你的例子
8*6-4
44
8*(6-4)
16
如果您想要更多的互动性,可以使用calc
。
$ calc
C-style arbitrary precision calculator (version 2.12.4.4)
Calc is open software. For license details type: help copyright
[Type "exit" to exit, or "help" for help.]
; 10+10
20
; 8*6-4
44
; 8*(6-4)
16
;
您可以使用向上/向下箭头浏览过去的命令,并且还具有交互式帮助。
; help
给你这个:
For more information while running calc, type help followed by one of the
following topics:
topic description
----- -----------
intro introduction to calc
overview overview of calc
help this file
assoc using associations
builtin builtin functions
command top level commands
config configuration parameters
custom information about the custom builtin interface
define how to define functions
environment how environment variables effect calc
errorcodes calc generated error codes
expression expression sequences
file using files
history command history
interrupt how interrupts are handled
list using lists
mat using matrices
...
您的问题有很多答案...
您可以在Shell中执行的简单操作。
$ echo $((8*(6-4)))
16
作为专用程序bc
。
$ echo "8*(6-4)" | bc
16
通过脚本自定义功能?好吧,shell脚本和bc都在某种程度上拥有它们。取决于您要走多远。
为什么不使用Python?很容易学习。
$ python
>>> from math import atan
>>> 8*(6-4)+atan(0)
16.0
L(t):= exp(%i * t * 2 *%pi); / *单位圆的参数设置成角度* / plot2d( [atan2(imagpart(L(x)),realpart(L(x)))), [x,0,1], [y,-2 *%pi,2 *%pi], [plot_format,gnuplot], [gnuplot_term,“ png”], [gnuplot_out_file,“ atan2.png”], [传说,“ atan2”], [xlabel,“弧度角”], [ylabel,“弧度角”], [gnuplot_preamble,“ 将键设置在左上方; 设置xtics('pi / 2'0.25,'pi'0.5,'3pi / 2'0.75,'2pi'1.0); 设定值('-2pi'-6.283,'-pi'-3.1415,'-pi / 2'-1.5708,'0'0,'pi / 2'1.5708,'pi'3.1415,'2pi'6.283); 设置网格xtics ytics“] );
高温超导
这是一个bash小技巧,可让您直接在命令行上执行简单的算术运算。
alias calc='set -o noglob; docalc'
function docalc { perl -e "print STDOUT $*, \"\\n\""; set +o noglob; }
然后您可以做,例如
calc 3 * 15 + 5
不幸的是,它不能很好地用括号括起来。(如果我没记错的话,您也可以让tcsh接受这些,但是我不能说服bash参加。)
PS。您可以通过将perl
调用替换为echo $(( $* ))
; 来依靠bash进行算术运算。但这将为您提供整数除法5/6
,等等。Perl的算法更有用。
替代方法:如果您唯一需要使用python的牛肉import math
,则以下是您的朋友:
% alias calc='python -i -c "from math import *"'
% calc
>>> 5 * atan(0.25)
另一种方法是使用类似Python 3的解释器:
$ python3
> from math import *
> 213/53*exp(0.8)/asin(3)
9.645423462356044
优点是,您可以编写所有内容的脚本,提供了许多功能(cmath
如果需要复数,也可以导入),在大多数情况下无需设置任何精度,并且在大多数Linux安装中已经安装了python。
对于通用计算器,Python 3.x比Python 2.x更好,因为如果结果不是整数,则Python 3.x会进行浮点除法。
$ python3
> 3/2
1.5
$ python2
> 3/2
1
至少对我来说,主要的不利之处在于,如果没有很大或小的大小,并且没有格式字符串,则浮点数不会以科学计数法进行打印:
> exp(35)
1586013452313430.8
> "{:e}".format(exp(35))
'1.586013e+15'