bc(独有特点既包含整数,也包含小数)
bc是一种任意精度的计算语言,注意是一种语言,它提供了一些语法结构,
比如条件判断、循环等,可以说是很强大的,但是我在实际中还没有找到
需要这个用途的场合 。另外一个用途就是用来进行进制转换。
参数
-i 强制交互模式;
-l 使用bc的内置库,bc里有一些数学库,对三角计算等非常实用;
-q 进入bc交互模式时不再输出版本等多余的信息。
特殊变量
ibase,obase 用于进制转换,ibase是输入的进制,obase是输出的进制,默认是十进制;
scale 小数保留位数,默认保留0位。
例子1:
[root@node01 day4]# 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+3
5
3*3
9
5/2
2
5%2
1
5**5
例子2:
[root@node01 day4]# echo 1+2|bc
3
[root@node01 day4]# echo 1+3|bc
4
[root@node01 day4]# echo 1+5|bc
6
[root@node01 day4]# echo 1+5.1|bc (小数计算是bc特有的)
6.1
[root@node01 day4]# echo 1.1+5.1|bc
6.2
[root@node01 day4]# expr 1.1 + 2
expr: non-numeric argument
[root@node01 day4]# echo $((1.1+2))
-bash: 1.1+2: syntax error: invalid arithmetic operator (error token is ".1+2")
[root@node01 day4]# let 1+2
[root@node01 day4]# let 1.1+2
-bash: let: 1.1+2: syntax error: invalid arithmetic operator (error token is ".1+2")
[root@node01 day4]# echo 1.1-5.1|bc
-4.0
scale(保留小数位数)
[root@node01 day4]# echo "scale=1;1.1*2.2|bc"
scale=1;1.1*2.2|bc
[root@node01 day4]# echo "scale=1;1.1*2.2"|bc
2.4
[root@node01 day4]# echo "1.1*2.2"|bc
2.4
[root@node01 day4]# echo "1.1*2.2"|bc -l
2.42
[root@node01 day4]# echo "scale=1;1.3/2.2"|bc
.5
[root@node01 day4]# echo "scale=3;1.3/2.2"|bc
.590
进制转换
[root@node01 day4]# echo "obase=2;8"|bc 十进制8转换为2进制
1000
[root@node01 day4]# echo "obase=16;20"|bc 十进制8转换为16进制
14
例子3:
输出表达式和结果
[root@node01 day4]# echo ` seq -s '+' 10 `=` seq -s "+" 10|bc`
1+2+3+4+5+6+7+8+9+10=55
[root@node01 day4]# echo ` seq -s '+' 10 `=$((`seq -s "+" 10`))
1+2+3+4+5+6+7+8+9+10=55
[root@node01 day4]# echo ` seq -s '+' 10 `=`seq -s " + " 10|xargs expr`
1+2+3+4+5+6+7+8+9+10=55
其他运算方法
typeset
$[]
bc是一种任意精度的计算语言,注意是一种语言,它提供了一些语法结构,
比如条件判断、循环等,可以说是很强大的,但是我在实际中还没有找到
需要这个用途的场合 。另外一个用途就是用来进行进制转换。
参数
-i 强制交互模式;
-l 使用bc的内置库,bc里有一些数学库,对三角计算等非常实用;
-q 进入bc交互模式时不再输出版本等多余的信息。
特殊变量
ibase,obase 用于进制转换,ibase是输入的进制,obase是输出的进制,默认是十进制;
scale 小数保留位数,默认保留0位。
例子1:
[root@node01 day4]# 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+3
5
3*3
9
5/2
2
5%2
1
5**5
例子2:
[root@node01 day4]# echo 1+2|bc
3
[root@node01 day4]# echo 1+3|bc
4
[root@node01 day4]# echo 1+5|bc
6
[root@node01 day4]# echo 1+5.1|bc (小数计算是bc特有的)
6.1
[root@node01 day4]# echo 1.1+5.1|bc
6.2
[root@node01 day4]# expr 1.1 + 2
expr: non-numeric argument
[root@node01 day4]# echo $((1.1+2))
-bash: 1.1+2: syntax error: invalid arithmetic operator (error token is ".1+2")
[root@node01 day4]# let 1+2
[root@node01 day4]# let 1.1+2
-bash: let: 1.1+2: syntax error: invalid arithmetic operator (error token is ".1+2")
[root@node01 day4]# echo 1.1-5.1|bc
-4.0
scale(保留小数位数)
[root@node01 day4]# echo "scale=1;1.1*2.2|bc"
scale=1;1.1*2.2|bc
[root@node01 day4]# echo "scale=1;1.1*2.2"|bc
2.4
[root@node01 day4]# echo "1.1*2.2"|bc
2.4
[root@node01 day4]# echo "1.1*2.2"|bc -l
2.42
[root@node01 day4]# echo "scale=1;1.3/2.2"|bc
.5
[root@node01 day4]# echo "scale=3;1.3/2.2"|bc
.590
进制转换
[root@node01 day4]# echo "obase=2;8"|bc 十进制8转换为2进制
1000
[root@node01 day4]# echo "obase=16;20"|bc 十进制8转换为16进制
14
例子3:
输出表达式和结果
[root@node01 day4]# echo ` seq -s '+' 10 `=` seq -s "+" 10|bc`
1+2+3+4+5+6+7+8+9+10=55
[root@node01 day4]# echo ` seq -s '+' 10 `=$((`seq -s "+" 10`))
1+2+3+4+5+6+7+8+9+10=55
[root@node01 day4]# echo ` seq -s '+' 10 `=`seq -s " + " 10|xargs expr`
1+2+3+4+5+6+7+8+9+10=55
其他运算方法
typeset
$[]