原文来自
http://mlsx.xplore.cn/read.php/461.htm
作者:mlsx
转贴请著名出处
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以前一直以为bc做了不了浮点运算,虽然他能结算类似
13.4*45.6
的乘法,但是在计算除法的时候,无论你输入
5/3
还是
5/3.0
得到的结果都是
1
我也没有去看man手册,今天无意中发现了ibase这个变量,是bc使用的一个变量,表示输入的数字的进制,比如ibase=8,表示你输入的数是8进制的。
这让我很好奇,于是去看了man手册,原来他是可以做浮点除法的,只是默认不输出小数点后面的值,它同样采用了一个变量来控制--scale,其值表示输出多少位小数。另外一个和ibase对应的变量是obase,表示结果输出采用什么进制,默认是10进制。
给出几个例子,大家一看就明白了。
[root@lancy bin]# echo "2.5*3.4" |bc
8.5
[root@lancy bin]# echo "5/3; 5/3.1" |bc
1
1
[root@lancy bin]# echo "scale=2; 5/3" |bc
1.66
[root@lancy bin]# echo "ibase=10;obase=2; 4*6"|bc
11000
[root@lancy bin]# echo "ibase=2; 110*101; obase=10" |bc
30
[root@lancy bin]# echo "ibase=2; 11110; obase=2" |bc
30
另外一个强大的计算工具是dc(desktop calculator),它采用RPN(逆波兰式输入)
dc工具比bc工具要难使用的多,看看它的info和man帮助就知道了,但是精通dc的人却能给出这样的输出
[root@lancy bin]# echo "16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D68736142snlbxq" | dc
Bash
echo "12[p]s2[lip/dli%0=1dvsr]s12sid2%0=13sidvsr[dli% 0=1lrli2+dsi>.]ds.xd1<2" | dc
2
2
3
这是因子分解的脚本。类似factor命令,命令中12是要分解的数。
(以上部分内容来至ABS)
收藏此页到5itag