Linux命令bc使用详解

bc 命令是任意精度计算器语言,通常在linux下当计算器用,可以做基本的数学运算及进制转换。

bc命令参数

-i:强制进入交互式模式;
-l:定义使用的标准数学库;
-w:对POSIX bc的扩展给出警告信息;
-q:不显示bc环境信息,直接运行命令;
-v:显示指令版本信息;
-h:显示指令的帮助信息。

bc命令常用的运算符:

+ 加法
– 减法
* 乘法
/ 除法
^ 指数
% 余数

bc运算实例

1、运行bc命令,并进行简单的数学运算

robin@robin-Lenovo:~$ bc -q

2+3
5
3*4
12
2+3*5
17
100/2
50
2^3
8
100%3
1
3.14*10*10
314.00

  • 在终端执行bc -q命令将启动计算程序,可连续进行数学运算,退出时只需输入“quit”命令,并按回车。

2、以管道形式显示3+2*6运算结果

robin@robin-Lenovo:~$ echo "3+2*6" | bc

15

3、将十进制的254转换为二进制数

robin@robin-Lenovo:~$ echo "obase=2;ibase=10;254" | bc

11111110

  • ibase 为转换前数字的数制
  • obase 为转换后数字的数制
  • 您也可以任意设置ibase及obase的值,来进行不同数制间的转换

3.1、将八进制的512转换为16进制数

robin@robin-Lenovo:~$ echo "obase=16;ibase=8;512" | bc

14A

3.2、将八进制的12转换为二进制数

robin@robin-Lenovo:~$ echo "obase=2;ibase=8;12" | bc

1010

4、显示10/4的运算结果

robin@robin-Lenovo:~$ echo "10/4" | bc

2

 robin@robin-Lenovo:~$ echo "scale=2;10/4" | bc

2.50

  • 注意两次命令的区别,当不指定小数位数时,默认商是取整数的,若要显示精确结果,需使用scale=Number,来设置需要保留小数位数。

5、将文件sum.txt中的数学算式逐个运算出结果

robin@robin-Lenovo:~$ bc -q sum.txt

6、其它常用函数

  • length() 返回数据的位数
  • scale() 返回数据小数位数
  • sqrt() 开平方根

7、其它基于库函数的运算

s(x): 正弦函数(x为弧度)

c(x): 余弦函数(x为弧度)

a(x): 反正切函数(结果为弧度)

l(x):  自然对数函数

e(x): : 以e为底的指数函数

j(n,x):  贝赛尔函数

使用这些库函数时,bc要加上 -l 參数 (加上-l时,  scale=20,也即小数位数为20位)