bc命令:浮点数计算
在终端输入 bc 命令,然后回车,就可以进入 bc:
[root@localhost simon]# bc -q 2+3 5
bc命令选项
选项 | 说明 |
---|---|
-h | --help | 帮助信息 |
-v | --version | 显示命令版本信息 |
-l | --mathlib | 使用标准数学库 |
-i | --interactive | 强制交互 |
-w | --warn | 显示 POSIX 的警告信息 |
-s | --standard | 使用 POSIX 标准来处理 |
-q | --quiet | 不显示欢迎信息 |
例如你不想输入 bc 命令后显示一堆没用的信息,那么可以输入bc -q
:
内置变量
变量名 | 作 用 |
---|---|
scale | 指定精度,也即小数点后的位数;默认为 0,也即不使用小数部分。 |
ibase | 指定输入的数字的进制,默认为十进制。 |
obase | 指定输出的数字的进制,默认为十进制。 |
last 或者 . | 表示最近打印的数字 |
内置函数
函数名 | 作用 |
---|---|
s(x) | 计算 x 的正弦值,x 是弧度值。 |
c(x) | 计算 x 的余弦值,x 是弧度值。 |
a(x) | 计算 x 的反正切值,返回弧度值。 |
l(x) | 计算 x 的自然对数。 |
e(x) | 求 e 的 x 次方。 |
j(n, x) | 贝塞尔函数,计算从 n 到 x 的阶数。 |
要想使用这些数学函数,在输入 bc 命令时需要使用-l
选项,表示启用数学库。
【1】scale 变量用法举例:scale变量的用法举例刚开始的时候,10/3 的值为 3,不带小数部分,就是因为 scale 变量的默认值为 0;
后边给 scale 指定了一个大于 0 的值,就能看到小数部分了。 【2】ibase 和 obase 变量用法举例:ibase 和 obase 用法示例注意:obase 要尽量放在 ibase 前面,因为 ibase 设置后,后面的数字都是以 ibase 的进制来换算的。 【3】可以将多个表达式放在一行,只要用分号;隔开就行。
直接输出 bc 的计算结果
形式: echo "expression" | bc
将 bc 的计算结果赋值给 Shell 变量 形式:
variable=$(echo "expression" | bc) variable 就是变量名。
【实例1】最简单的形式: [c.biancheng.net]$ echo "3*8"|bc 24 [c.biancheng.net]$ ret=$(echo "4+9"|bc) [c.biancheng.net]$ echo $ret 13 【实例2】使用 bc 中的变量: [c.biancheng.net]$ echo "scale=4;3*8/7"|bc 3.4285 [c.biancheng.net]$ echo "scale=4;3*8/7;last*5"|bc 3.4285 17.1425 【实例3】使用 Shell 脚本中的变量: [c.biancheng.net]$ x=4 [c.biancheng.net]$ echo "scale=5;n=$x+2;e(n)"|bc -l 403.42879 在第二条命令中,$x表示使用第一条 Shell 命令中定义的变量,n是在 bc 中定义的新变量,它和 Shell 脚本是没关系的。 【实例4】进制转换: #十进制转十六进制 [mozhiyan@localhost ~]$ m=31 [mozhiyan@localhost ~]$ n=$(echo "obase=16;$m"|bc) [mozhiyan@localhost ~]$ echo $n 1F #十六进制转十进制 [mozhiyan@localhost ~]$ m=1E [mozhiyan@localhost ~]$ n=$(echo "obase=10;ibase=16;$m"|bc) [mozhiyan@localhost ~]$ echo $n 30