linux中的计算器

参考:http://c.biancheng.net/view/2680.html

windows系统安装时会自带计算器,在cmd中运行calc即可打开。那么linux系统中有没有计算器呢?答案是肯定的。

linux下的图形计算器

linux系统一般也会默认安装一个图形界面的计算器,例如红帽系统默认安装的是gcalctool。假如在一个图形桌面环境中需要一个计算器时,在终端中运行gcalctool即可打开。
如果系统没有运行桌面环境,那是否有一个支持命令行的计算器呢?

linux下的命令行计算器

bc是任意精度计算器,官方对它的描述是“an arbitrary precision calculator language”,一种支持任意精度计算的计算器语言,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素。bc可以在交互环境下使用,也可以再shell编程中使用。

* 交互模式下使用bc

在终端中输入bc --help,可以查看bc的使用说明:

[release@redhat59-211 ~]$ bc -h
usage: bc [options] [file ...]
  -h  --help         print this usage and exit,显示帮助
  -i  --interactive  force interactive mode,强制进入交互模式
  -l  --mathlib      use the predefine math routnes,加载数学库
  -q  --quiet        don't print initial banner,不打印版本信息
  -s  --standard     non-standard bc constructs are errors
  -w  --warn         warn about non-standard bc constructs
  -v  --version      print version information and exit,显示版本

bc有四个常用的内置变量,如下表所示:

变量名作用
scale指定精度,即小数点后的位数,默认为0,所以默认执行1/2,结果为0
ibase指定输入的数字的进制,如ibase=2
obase指定输入数字的进制,如果需要设置ibase和obase,应先设置obase
last表示最近打印的数字

在终端中输入bc,可以进行bc的交互模式,然后输入想要计算的表达式即可。示例如下图,可见bc支持变量、函数,功能还是挺强大的。

[release@redhat59-211 ~]$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
1+1
2
n=2
n+1
3
sqrt(9)
3
define myadd(a,b){
    return a+b;
}
myadd(1,2)
3
last
3
1/2
0
scale=2
1/2
0.50
obase=2
ibase=10
10
1010

此外,如果想计算正弦、余弦、正切等,可以在启动bc时加-l参数,如bc -l,这样就引入了数学库,可以使用s(1)计算1的正弦值。

函数名作用
s(x)计算正弦值,x为弧度值
c(x)计算余弦值
a(x)计算反正切值
l(x)计算x的自然对数
e(x)计算e的x次方
j(n,x)贝塞尔函数,计算从n到x的阶数
[root@localhost bin]# bc -l
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'. 
s(1)
.84147098480789650665
c(1)
.54030230586813971740
s(1)*s(1)+c(1)*c(1)
.99999999999999999999
* shell脚本中使用bc计算器

在shell脚本中可以借助管道或者输入重定向来使用bc计算器。

  • 借助管道使用bc
    echo "expression"|bc,其中expression是计算的数学表达式。
    示例:var=$(echo "1+1"|bc),将1+1的计算结果赋值给var变量
[release@redhat59-211 ~]$ echo "10^2"|bc
100
[release@redhat59-211 ~]$ var=$(echo "10^2"|bc)
[release@redhat59-211 ~]$ echo $var
100
[release@redhat59-211 ~]$ echo "$var*2"|bc
200
[release@redhat59-211 ~]$ echo "obase=2;10"|bc  10转换为2进制
1010
  • 借助重定向使用bc
    使用方法:
var=$(bc <<EOF
expressions
EOF
)

示例:

[release@redhat59-211 ~]$ var=$(bc <<EOF
> obase=10;
> ibase=16;
> F
> EOF
> )
[release@redhat59-211 ~]$ echo $var
15

更多例子请参考:
https://blog.csdn.net/pdcxs007/article/details/48222663#%E7%A4%BA%E4%BE%8B%E4%B8%80%E6%8C%87%E5%AE%9Api%E7%9A%84%E5%80%BC

转载于:https://www.cnblogs.com/21summer/p/11007837.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值