LINUX任意精度计算器BC用法
【用途说明】
Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。手册页上说bc是An arbitrary precision calculator language,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断、循环等,可以说是很强大的,但是我在实际中还没有找到需要这个用途的场合
。另外一个用途就是用来进行进制转换。
【常用参数】
一般情况下,我们使用不带任何参数的bc命令:
bc
如果需要bc不输出提示信息,可以加上-q参数:
bc -q
如果要使用强大的数学库,比如计算三角函数,需要加上-l参数:
bc -l
因为bc本身是一个命令解释器,要退出它只要直接输入quit回车或者按Ctrl+D终止。
【使用示例】
示例一 命令行方式使用bc
[root@localhost centos39]# bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
3+4
7
3-4
-1
3*4
12
3/4
0
scale=2;3/4 # 保留小数点精度只对除法、取余、乘幂有效
.75
3/4
.75
3%4
0
scale=0
3%4
3
3^4
81
Ctrl+D
[root@localhost centos39]#
示例二
通过管道使用bc来计算
[root@localhost centos39]# echo 3 * 4 | bc
(standard_in) 1: parse error
[root@localhost centos39]# echo "3 * 4" | bc
12
[root@localhost centos39]# echo "scale=7; 355/113" | bc
3.1415929
[root@localhost centos39]#
这种方式下还可以用于浮点数据类型的大小比较:
a=1.2
b=3.2
c=`echo "$a < $b" | bc`
echo "$c"
以上脚本执行结果是1,而如果比较的结果是不满足的(比如将上面的$a < $b改为$a
> $b),输出结果就是0。
注意:这里一定一定要注意的是,这个比较结果就是0或1,而不是代表true或false,因而不能用于if后的条件判断!切记切记!
示例三 进制转换
[root@rhel55 ~]# echo "ibase=16; FFFF" | bc
65535
[root@rhel55 ~]# echo "obase=16; 1000" | bc
3E8
[root@rhel55 ~]#
我们用到bc的ibase和obase方法。
ibase是输入数字的进制,而obase就是输出数字的进制了。很好记,i是input,o是output。
如果用一条命令来转数字,可以用echo命令和管道结合bc。如下:
10进制转2进制:
$ echo "obase=2;ibase=10;100" | bc1100100
10进制转16进制:
$ echo "obase=16;ibase=10;100" | bc64
16进制转10进制:
$ echo "ibase=16;obase=2;F1" | bc11110001
注意,16进制数字的F要大写,如果小写结果是不对的。像最上面没有指定的时候,默认是10进制。
示例四 将多个表达式写在一个文件中一起计算
[root@rhel55 ~]# cat test.bc
123*321
123/321
scale=4;123/321
[root@rhel55 ~]# bc test.bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
39483
0
.3831
Ctrl+D
[root@rhel55 ~]#
[root@rhel55 ~]# cat test.bc | bc
39483
0
.3831
[root@rhel55 ~]#
示例五 一个计算三角形面积的Bash脚本
先复习一下初中的知识:b表示三角形的底,h表示三角形的高,那么三角形的面积计算公式是b*h/2 。
文件 :area_of_triangle.sh
Bash代码
#!/bin/bash
# Shell program/script to read the base and height of a traingle and find its area
# -------------------------------------------------------------------------
# Copyright (c) 2005 nixCraft project <http://cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
# Formula info: http://www.mste.uiuc.edu/dildine/heron/triarea.html
# Area=(1/2) x Base x Height
echo -n "Enter base of a triangle : "
read b
echo -n "Enter height of a triangle : "
read h
# calculate it and display back
area=$(echo "scale=2;(1/2) * $b * $h"|bc)
echo "Area of a triangle is $area"
[root@smsgw academic]# ./area_of_triangle.sh
Enter base of a triangle : 123
Enter height of a triangle : 321
Area of a triangle is 19741.50
[root@smsgw academic]#
示例六 使用bc命令的脚本片段
Bash代码
# usage: calc_sum <num1> <num2>
# 计算两个数的和
calc_sum()
{
bc -q <<EOF
$1+$2
EOF
}
# usage: calc_free <count>
# 计算费用,单价0.05元
calc_fee()
{
bc -q <<EOF
0.05*$1
EOF
}
将以上代码粘贴到终端。
[root@web ~]# # usage: calc_sum <num1> <num2>
[root@web ~]# # 计算两个数的和
[root@web ~]# calc_sum()
> {
> bc -q <<EOF
> $1+$2
> EOF
> }
[root@web ~]#
[root@web ~]# # usage: calc_free <count>
[root@web ~]# # 计算费用,单价0.05元
[root@web ~]# calc_fee()
> {
> bc -q <<EOF
> 0.05*$1
> EOF
> }
[root@web ~]#
[root@web ~]#
[root@web ~]# calc_sum 123 321
444
[root@web ~]# calc_fee 1000
50.00
[root@web ~]#
示例七 使用数学库
有文章称可以计算100位的圆周率pi值。
[root@web ~]# echo "scale=100; a(1)*4" | bc
Runtime error (func=(main), adr=11): Function a not defined.
[root@web ~]# echo "scale=100; a(1)*4" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
8164062862089986280348253421170676
[root@web ~]#
LINUX任意精度计算器BC用法的更多相关文章
- 任意精度计算器 bc (arbitrary precision calculator)
2019/06/18 bc 学习之 https://www.runoob.com/linux/linux-comm-bc.html
- Linux下的计算器(bc、expr、dc、echo、awk)知多少?
linux 其他知识目录 原文链接:http://blog.chinaunix.net/uid-24673811-id-1760837.html linux下的三个命令可以用来作计算,下面一一讲解用法 ...
- 【转载】linux命令行计算器bc的一个“坑”
[转载自]http://blog.chinaunix.net/uid-174325-id-3518953.html 结论:ibase,obase可以使用在不同的计算公式里,但是尽量把obase放iba ...
- centos7 shell 计算器 bc 命令
2021-08-03 1. 安装 yum -y install bc 2. 简介 bc 命令是任意精度计算器语言,通常在 linux 下当计算器使用 类似基本的计算器, 使用这个计算器可以做基本的数学 ...
- 《linux下的计算器:bc用法入门篇》
说起电脑上的计算器,可能所有人的印象都是这样的:
- Linux下的简单好用的计算器bc
1. 关于bc bc是随意精度计算器语言,通常在linux下当计算器用,简单好用.相当于windows下的计算器. 2. 支持的运算符 主要的数学运算: + 加法 - 减法 * 乘法 / 除法 ^ 指 ...
- Linux shell 整数运算 let [ ] (( )) expr以及 浮点数 bc用法(转)
Abstract : 1) Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算:2)Linux shell 中使用 expr 与 b ...
- linux sed命令参数及用法详解
linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...
- 分享一个命令行计算器-bc
分享一个命令行计算器-bc 假如你在一个图形桌面环境中需要一个计算器时,你可能只需要一路进行点击便可以找到一个计算器.例如,Fedora 工作站中就已经包含了一个名为 Calculator 的工具.它 ...
随机推荐
- Jmeter如何使用数据库返回值实践
Jmeter如何使用数据库返回值实践 最近使用Jmeter针对产品做性能测试,测试内容是要模拟300并发用户审批休假申请时的性能.由于每个申请人的主管不同,且会根据不同的休假类型,会有一级审批或者二级 ...
- idea 错误: 找不到或无法加载主类 xxx.xxx.xxxxx
idea 错误: 找不到或无法加载主类 xxx.xxx.xxxxx JDK环境,maven项目还是ee还是web项目,是否都正常. 如果是用idea打开的话,在源码目录上点击右键,然后找到Mark d ...
- idea 中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
maven的配置文件settings.xml中添加: <profile> <id>jdk-1.8</id> <activation> <activ ...
- 表视图为Group类型的注意问题
使用group类型的tableview时,第一个section距离navigationbar的距离很大,不符合这边的设计图. 使用 myTableView . sectionHeaderHeight ...
- 自定义 filter simple_tag inclusion_tag 总结
在已经注册的app下创建templatetags的python包 在包内创建py文件 my_tags.py 在py文件中写代码: from django import template registe ...
- Django-ORM之ForeignKey的使用-多对一关系
ForeignKey使用俩表示两张表多对一关系的外键,外键字段要定义在多属性的表中. 定义外键时,to的表可以直接写类名,但是需要注意类的定义顺序:也可以写字符串式的类名,这样就可以忽略class类的 ...
- 'Python.exe' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
说明python不能被调用,需要为他制定正确的路径.0=0(win10想要打开任何东西,左下角搜索框) 1.打开 python,输入import os 输入os.getcwd,得到路径. 2.打开 编 ...
- 关联SecureCRT
建议安装SecureCRT 8.1及其以上版本,打开http://EVE-NG地址/files/windows.zip下载eve-ng的Windows关联文件,然后使用文本编辑工具编辑win7_64b ...
- Redis高级主题
Redis高级主题 持久化 Redis 支持持久化, 其持久化数据有两种方式. 两种可以同时使用. 如果同时使用, Reids 在重启时将使用 AOF 方式来还原数据. RDB 按照一定策略定时同 ...
- PHP xdebug 断点调试
转载自: https://blog.csdn.net/qq_32631847/article/details/82054011