1

一、命令介绍

  bc命令是一种支持任意精度的交互执行的计算器语言。

二、基本使用

(1)使用方式

  • 交互式
[root@cp ~]# 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'. 
1+1
2
  • bc + filename
[root@cp ~]# cat 1.txt
1+1
2*3
[root@cp ~]# bc "1.txt"
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
6
  • echo + 管道 + bc
[root@cp ~]# echo "1+1" | bc
2
  • bc + 重定向
[root@cp ~]# bc < "1.txt"
2
6
[root@cp ~]# bc <<< "1+1"
2

(2)基本运算

     +   加法
[root@cp ~]# bc <<< "5+4"
9
[root@cp ~]# bc <<< "-1+-1"
-2
[root@cp ~]# bc <<< "1.5+1.7"
3.2
     -    减法
[root@cp ~]# bc <<< "5-4"
1
     *    乘法
[root@cp ~]# bc <<< "5*4"
20
     /    除法
[root@cp ~]# bc <<< "2/4"               //为什么 “2/4” 等于0呢,因为bc的内置函数scale默认指定了显示小数点后0位数
0
[root@cp ~]# bc <<< "scale=2;2/4"       //我们自定义一下显示小数点后2位,结果小于1的浮点数,0会自动省略。
.50
[root@cp ~]# bc <<< "scale=2;5/4"
1.25
     ^   指数
[root@cp ~]# bc <<< "2^4"
16
     %  取余
[root@cp ~]# bc <<< "4%2"
0
[root@cp ~]# bc <<< "4%3"
1

(3)特殊变量和内置函数

  •   特殊变量
变量名 作用
scale 定义小数点后的位数
ibase 指定输入的进制数
obase 指定输出的进制数
last 或者 . 存储着最后一个打印数字的值
    实例演示:
[root@cp ~]# bc <<< "scale=1;2/1"
2.0
[root@cp ~]# bc <<< "scale=2;2/1"
2.00
[root@cp ~]# bc <<< "scale=2;1/2"
.50
[root@cp ~]# bc <<< "ibse=10;obase=2;10"        //十进制转二进制
1010
[root@cp ~]# bc <<< "obase=2;10"                //默认输入进制为十进制转
1010
[root@cp ~]# bc <<< "obase=2;3"
11
[root@cp ~]# bc <<< "scale=1;2/1;last"
2.0
2.0
[root@cp ~]# bc <<< "scale=1;2/1;."
2.0
2.0
[root@cp ~]# cat 1.txt
1+1
2*3
last                    //使用.也是一样效果
[root@cp ~]# bc < 1.txt
2
6
6

  •   内置函数
名称 作用
length() 获取有效数字位数
scale() 获取小数点后数字位数
sqrt() 平方根计算
read() 从标准输入中读取数字
    实例演示:
[root@cp ~]# bc <<< "length(100)"
3
[root@cp ~]# bc <<< "length(1.15)"
3
[root@cp ~]# bc <<< "scale(1.15)"
2
[root@cp ~]# bc <<< "sqrt(100)"
10
[root@cp ~]# bc <<< "sqrt(7)"
2
[root@cp ~]# bc <<< "scale=5;sqrt(7)"
2.64575
1

发表评论

验证码: 8 + 1 =