linux BC命令行计算器
1. 基本使用:
$ bc <<< 5*4
20
$ bc <<< 5+4
9
$ bc <<< 5-4
1
或者
$ echo "5*4" | bc
20
$ echo "5+4" | bc
9
$ echo "5-4" | bc
1
也能够把算式写到文件中面。然后一次计算。
$ cat calcFile
5+5
6+7 $ bc < calcFile
10
13
也能够使用HERE 命令:
$ bc << HERE
> 1+4
> 4-1
> 2*4
> HERE
5
3
8
能够使用内置的变量 last 引用上一次的结果:
$ echo "5-4;last+6" | bc
1
7
last 也能够用 点号取代:
$ echo "5-4;.+6" | bc
1
7
2. 浮点数运算:
能够使用scale指定小数点之后的位数(默觉得0,即整数)
$ echo "sqrt(10)" | bc
3
$ echo "scale=1;sqrt(10)" | bc
3.1
$ echo "scale=10;sqrt(10)" | bc
3.1622776601
有时候得不到指定的位数:
$ echo "scale=10; 1.25*9" | bc
11.25
此时,能够改动为:
$ echo "scale=10; 1.25*9/1" | bc
11.2500000000
3. 数制转换:
能够使用变量 ibase表示转换前数字的数制;obase表示转换后数字的数制
$ echo 'obase=16;128' | bc
80
$ echo 'ibase=16;obase=A;80' | bc
128
$ echo 'obase=2;128' | bc
10000000
$ echo 'ibase=2;obase=A;10000000' | bc
128
$ echo "obase=10;ibase=16;80" | bc
128
4. 指数运算:
$ echo "5^5" | bc
3125
$ echo "(5^5)^5" | bc
298023223876953125
记得第一个指数运算的结果要加入括号。
5. 基于函数库的运算
bc支持下面函数:
s(x): 正弦函数(x为弧度)
c(x): 余弦函数(x为弧度)
a(x): 反正切函数(结果为弧度)
l(x): 自然对数函数
e(x): 以e为底的指数函数
j(n,x): 贝赛尔函数
此时。bc要加上 -l 參数 (此时。 scale 为20)
计算 log1.5(2) (以 1.5为底,2的对数):
$ echo "l(2)/l(1.5)" | bc -l
1.70951129135145477699
也能够用 awk命令:
$ awk 'BEGIN {printf "%1l.9f\n", log(2)/log(1.5)}'
1.709511291
6. 脚本函数编程:
$ cat calc_prog
print "Enter a number A\n"; a = read() print "Enter another number B\n"; b = read() if (b == a) { print "B = A\n"; } if (a < b) { print "B > A\n"; } if (a > b) { print "B < A\n"; }
$ bc -l calc_prog
7. 脚本模拟计算器:
$ cat calc.sh
#!/bin/bash bc << END
scale=2
$@
END
$ ./test.sh 1+2
3
參考:
http://mylinuxbook.com/linux-command-line-calculator-bc-examples/
版权声明:本文博客原创文章,博客,未经同意,不得转载。
linux BC命令行计算器的更多相关文章
- bc:linux下命令行计算器
在linux下,存在一个命令行的计算器:bc.该程序一般随发行版发布. bc计算器能够执行一些基本的计算,包括+,-,×,\,%. 这些计算不经针对十进制,还可以使用二进制,八进制,十六进制,并且可以 ...
- 一步步打造自己的linux命令行计算器
相信很多人,在工作中会需要使用到计算器.一般的做法是,打开并使用系统自带的计算器. 这种做法可能对我来说,有如下几个问题. 太慢.每次需要打开计算器,然后改成编程模式,手工选择进制,再使用输入表达式进 ...
- 分享一个命令行计算器-bc
分享一个命令行计算器-bc 假如你在一个图形桌面环境中需要一个计算器时,你可能只需要一路进行点击便可以找到一个计算器.例如,Fedora 工作站中就已经包含了一个名为 Calculator 的工具.它 ...
- Linux下命令行安装weblogic10.3.6
Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...
- Linux学习心得之 Linux下命令行Android开发环境的搭建
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...
- 28个Unix/Linux的命令行神器_转
28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...
- PS1应用之——修改linux终端命令行各字体颜色
最近在学习linux操作系统(CentOS 6 & CentOS 7).觉得linux终端命令行全部为白色,会经常导致命令与输出内容难以分辨.于是上网找到修改linux终端命令行颜色的方法,发 ...
- 转: windows 10使用原生linux bash命令行
转: https://www.zybuluo.com/pandait/note/337430 windows 10使用原生linux bash命令行 linux bash windows-10 第一时 ...
- Linux 常用命令行
Linux常用命令行 第一部分: cd命令 第二部分:文件操作 第三部分:压缩包操作
随机推荐
- C++模板:ST算法
//初始化 void init_rmq(int n){ for(int i=0;i<n;i++)d[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++) ...
- php:根据中文裁减字符串函数方法
define(CHARSET, 'UTF-8'); // 系统默认编码 /** * 根据中文裁减字符串 * @param $string - 字符串 * @param $length - 长度 * @ ...
- 使用线程 在shell上同步动态显示当前系统时间
//创建一个用于刷新当前系统时间的线程 new Thread() { public void run() { // 此处为另外一个单独线程,非UI线程 Display dis=shell.getDis ...
- C# ikvm 运行htmlunit Provider com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl not found
在使用 ikvm 去运行 htmlunit 中的 webclient Getpage的时候 报错说com.sun.org.apache.xerces.internal.jaxp.DocumentBu ...
- 关于left join 和 inner join
今天遇到一个逻辑很复杂的SQL,虽然写出来了,但是并没有完全体会,找了找资料,算是摸清楚了left join和inner join 的实际意义. 感谢PCJIM的文章,写的非常明白,原文地址:http ...
- C++之类的静态变量
成员变量 通过对象名能够访问public成员变量 每个对象都可以有只属于自己的成员变量 成员变量不能在对象之间共享 类的静态成员 静态成员变量 存储在 全局数据区 #include<std ...
- 「C」 函数、运算、流程控制
一.函数 (一)什么是函数 任何一个C语言程序都是由一个或者多个程序段(小程序)构成的,每个程序段都有自己的功能,我们一般称这些程序段为“函数”. (二)函数的定义 目的:将一个常用的功能封装起来,方 ...
- Java基础之编程语法(二)
1.常量: 整型:整数,4个字节. 长整型:整数,8个字节.以L结尾. 单精度浮点数:小数,4个字节.以F结尾. 双精度浮点数:小数,8个字节. 布尔:只有两个值,真(true)或假(false),1 ...
- HTTP协议一次上传多个文件的方法
如何通过HTTP协议一次上传多个文件呢?在这里有两个思路,是同一个方法的两种实现.具体程序还需自己去设计 1. 在form中设置多个文件输入框,用数组命名他们的名字,如下: < form act ...
- leetcode 211. Add and Search Word - Data structure design Trie树
题目链接 写一个数据结构, 支持两种操作. 加入一个字符串, 查找一个字符串是否存在.查找的时候, '.'可以代表任意一个字符. 显然是Trie树, 添加就是正常的添加, 查找的时候只要dfs查找就可 ...