bc命令详解与实例
bc:
bc 是一种高精度的可交互执行的计算机语言。它在一些浮点数的运算中应用广泛。
一般情况下我们直接输入 bc ,便可进入其工作环境。当然,它还有其他的参数
|
-h |
显示帮助信息并退出 |
|
-i |
强制进入交互模式 |
|
-l |
定义了标准的数学库 |
|
-w |
使用扩展时给出警告 |
|
-s |
使用标准语言 |
|
-q |
不打印欢迎信息 |
|
-v |
打印版本信息并退出 |
在bc中大多数的元素是数字,他们都有两种属性:长度与精度(小数点位数)
bc有4中特殊的变量
|
scale |
精度(小数点之后的位数) |
|
ibase |
输入进制数 |
|
obase |
输出进制数 |
|
last |
存储上个指令输出的结果 |
注释: /*……*/ 或者 #
支持的变量(var)与表达式(expr)
|
++/-- var |
先加(减)后取值 |
|
var ++/-- |
先取值后加减 |
|
-expr |
取反 |
|
expr+/-/*///%/^expr |
加减乘除求余乘方 |
|
(expr) |
布尔值 |
|
var=expr |
|
|
var<op>= expr |
var=var<op>expr |
|
expr1 </<=/>/>=/==/!=/expr2 |
判断语句 |
|
!expr |
取反 |
|
expr &&/|| expr |
逻辑运算 |
|
length( expression ) |
计算长度 |
|
read() |
读取输入 |
|
scale( expression ) |
精确度? |
|
sqrt( expression ) |
平方根 |
可调用的语句
|
print " ** " |
打印 |
|
{ 语句集合 } |
|
|
if (expression ) ** [else **] |
条件判断 |
|
while( expression ) ** |
循环 |
|
for([ exp1] ;[exp2] ; [exp3]) ** |
循环 |
|
break |
可跳出循环 |
|
continue |
进行下次循环 |
|
halt |
退出bc |
|
return |
函数返回 |
其他
|
limits |
显示limits |
|
quit |
退出 |
|
warranty |
显示bc相关信息 |
函数定义方法
define name ( parameters ) { newline
auto_list statement_list } 这个部分请看实例2或者man帮助来进一步了解。
关于数组 name[]
数学库函数
|
s(x) |
sin(x) x是弧度 |
|
c(x) |
cos(x) |
|
a(x) |
arctan(x) |
|
l(x) |
ln(x) |
|
e(x) |
ex |
|
j(n,x) |
贝塞尔函数的整数n x。 |
实例1
计算圆周率
|
[linux@linux ~]$ pi=$(echo "scale=10; 4*a(1)" | bc -l) [linux@linux ~]$ echo $pi 3.1415926532 |
实例2
|
scale = 20 /* Uses the fact that e^x = (e^(x/2))^2 When x is small enough, we use the series: e^x = 1 + x + x^2/2! + x^3/3! + ... */ define e(x) { auto a, d, e, f, i, m, v, z /* Check the sign of x. */ if (x<0) { m = 1 x = -x } /* Precondition x. */ z = scale; scale = 4 + z + .44*x; while (x > 1) { f += 1; x /= 2; } /* Initialize the variables. */ v = 1+x a = x d = 1 for (i=2; 1; i++) { e = (a *= x) / (d *= i) if (e == 0) { if (f>0) while (f--) v = v*v; scale = z if (m) return (1/v); return (v/1); } v += e } } |
实例3
创建test.bc
|
scale=2 print "\nCheck book program!\n" print " Remember, deposits are negative transactions.\n" print " Exit by a 0 transaction.\n\n" print "Initial balance? "; bal = read() bal /= 1 print "\n" while (1) { "current balance = "; bal "transaction? "; trans = read() if (trans == 0) break; bal -= trans bal /= 1 } quit |
|
[linux@linux ~]$ bc -q test.bc Check book program! Remember, deposits are negative transactions. Exit by a 0 transaction. Initial balance? 3 current balance = 3.00 transaction? 5 current balance = -2.00 transaction? 0 [linux@linux ~]$ |
通常在Bash脚本中使用bc的范例格式为:
variable=$(echo "OPTIONS; OPERATIONS" | bc [options]) 即:echo "[选项];操作" | bc [选项]
可参考实例1
|
[linux@linux ~]$ echo "obase=8; ibase=16; 11+a"|bc 21 |
下面这个实例可参考下书写格式
|
使用bc命令的脚本片段 |
bc命令就介绍到这了,如果朋友有更好的实例,希望能多多分享。
bc命令详解与实例的更多相关文章
- groupadd命令详解(实例)
groupadd命令详解(实例) 1.作用groupadd命令用于将新组加入系统. 2.格式groupadd [-g gid] [-o]] [-r] [-f] groupname 3.主要参数-g ...
- Linux下的压缩zip,解压缩unzip命令详解及实例
实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...
- Linux下的压缩解压缩命令详解及实例
实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...
- bc命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/lovevivi/p/4359296.html 最近经常要在linux下做一些进制转换,看到了可以使用bc命令,如下: ...
- JavaScript中的execCommand()命令详解及实例展示
execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令.处理Html数据时常用如下格式:document.execCommand(sCommand[,交互方式, 动态参数]) ,其 ...
- Linux crontab命令详解与实例
内容有重复的,不过本着宁多勿少的原则就都看看吧,就当加深印象啦 基本格式 :* * * * * command分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示第2列表示小时 ...
- unzip/tar命令详解
博客目录总纲首页 原文链接:https://www.cnblogs.com/zdz8207/p/3765604.html Linux下的压缩解压缩命令详解及实例 实例:压缩服务器上当前目录的内容为xx ...
- apt-get 命令详解(中文),以及实例
apt-get 命令详解(中文),以及实例 一,什么的是apt-get 高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubunt ...
- Windows WMIC命令使用详解(附实例)
第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符.在WMIC命令行提示符上,命令以交互的方式执行 执行“wmic”命令启动WMIC命令行环境.这个命令可以在 ...
随机推荐
- C Looooops(扩展欧几里得求模线性方程)
http://poj.org/problem?id=2115 题意:对于C的循环(for i = A; i != B; i+=C)问在k位存储系统内循环多少次结束: 若循环有限次能结束输出次数,否则输 ...
- 【模拟】NEERC15 E Easy Problemset (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
题目链接: http://codeforces.com/gym/100851 题目大意: N个人,每个人有pi个物品,每个物品价值为0~49.每次从1~n顺序选当前这个人的物品,如果这个物品的价值&g ...
- 【动态规划】【归并】Vijos P1412 多人背包
题目链接: https://vijos.org/p/1412 题目大意: 求01背包的前K优解,要求必须装满(1<=K<=50 0<=V<=5000 1<=N<=2 ...
- bzoj 1070 [SCOI2007]修车(最小费用最大流)
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3515 Solved: 1411[Submit][Status] ...
- mac下的改装人生——制作mac os 启动盘
我即将开始对我的mac进行彻底的改造,现在还需要的是一个mac的启动盘或者启动光盘.由于没钱买mac的安装光盘或者安装盘,只能网上下了一个镜像自己做启动盘~ 需要:装有Mac Os的电脑,至少8g的u ...
- [Sequence Alignment Methods] Cross-Recurrent Plot (CRP)
A recurrence plot (RP) is a straightforward way to visualize characteristics of similar system state ...
- 实时控制软件第一次作业--CNC软件系统分析
作者:李君威U201310747 一.该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:在数控系统中,位置控制.插补计算.紧急控制等严格实时性任务需要 ...
- 排序算法 Java实现版
8种排序之间的关系: 1. 直接插入排序 (1)基本思想: 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序 ...
- java_method_Log输出日志的方法
package cn.com.qmhd.tools; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigura ...
- python获取网络时间和本地时间
今天我们来看一下如何用python获取网络时间和本地时间,直接上代码吧,代码中都有注释. python获取网络时间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...