- 浏览: 4754682 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
bzhao:
你也应该可以这样:(not tested)./rbtunnel ...
在Bash脚本中怎么关闭文件描述符? -
bzhao:
如果有A进程原代码情况下,通过如下调用,把他的子进程继承关闭则 ...
在Bash脚本中怎么关闭文件描述符? -
Master-Gao:
楼主咋没分析下源码呢?
我使用过的Linux命令之dirname - 截取给定路径的目录部分 -
jiedushi:
tail -F 就可以吧
Linux下实时跟踪log4j日志文件的bash脚本 - 增强了tail -f的功能 -
java_is_new:
新手学习了,就是不明白为一个网卡配多个ip有什么用
我使用过的Linux命令之ifconfig - 网络配置命令
我使用过的Linux命令之bc - 浮点计算器、进制转换
本文链接:http://codingstandards.iteye.com/blog/793734 (转载请注明出处)
用途说明
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]#
示例三 进制转换
[root@rhel55 ~]# echo "ibase=16; FFFF" | bc
65535
[root@rhel55 ~]# echo "obase=16; 1000" | bc
3E8
[root@rhel55 ~]#
示例四 将多个表达式写在一个文件中一起计算
[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
#!/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命令的脚本片段
# 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 ~]#
问题思考
相关资料
【1】乡下猫 LINUX技术博客 linux中的bc命令(简单好用的计算器)
【2】想象力的专栏 Linux下的计算器(bc、expr、dc、echo、awk)知多少?
【3】我是网管 Liunx学习笔记19--bc计算器
【4】LAMP China linux bc命令使用
发表评论
-
在Linux用tar归档压缩文件时忽略某些文件和目录
2013-02-01 10:19 17055在Linux下,常用tar对文 ... -
使用nmap扫描服务器端口的一次操作
2012-11-01 17:00 15143使用nmap扫描服务器端口的一次操作 本文来自:http ... -
我使用过的Linux命令之wget - ooo
2011-09-14 13:10 0我使用过的Linux命令之wg ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:53 9151简明 Vim 练级攻略 http://coolshell.c ... -
推荐一篇学习Vim使用的好文:酷壳 - 简明 Vim 练级攻略
2011-09-09 12:49 1简明 Vim 练级攻略 http://coolshell.c ... -
我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
2011-08-29 13:18 12104我使用过的Linux命令之: ... -
我使用过的Linux命令之date - 显示、修改系统日期时间
2011-08-25 09:21 41986我使用过的Linux命令之da ... -
我使用过的Linux命令之declare - 声明shell变量(不知道没关系、知道了就更好的内建命令)
2011-08-16 09:22 21836我使用过的Linux命令之declare - 声明shell变 ... -
我使用过的Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
2011-08-11 09:31 28831我使用过的Linux命令之alias - 设置命令的别名,让 ... -
我使用过的Linux命令之ar - 创建静态库.a文件
2011-08-08 10:40 51935我使用过的Linux命令之ar - 创建静态库.a文件 本 ... -
我使用过的Linux命令之crontab - 设置例行任务(类似于Windows中的任务计划)
2011-08-04 22:26 9754我使用过的Linux命令之crontab - 设置例行任务(类 ... -
我使用过的Linux命令之chmod - 改变文件/目录的访问权限
2011-08-03 21:33 10709我使用过的Linux命令之chmod - 改变文件/目录的访问 ... -
我使用过的Linux命令之export - 设置或显示环境变量
2011-08-02 19:55 25442我使用过的Linux命令之export - 设置或显示环境变量 ... -
我使用过的Linux命令之wc - 统计文件行数、单词数或字节数
2011-07-26 10:50 29020我使用过的Linux命令之wc - 统计文件行数、单词数或字节 ... -
我使用过的Linux命令之groupdel - 删除群组
2011-07-22 22:13 9695我使用过的Linux命令之gr ... -
我使用过的Linux命令之ifconfig - 网络配置命令
2011-07-21 20:43 60560我使用过的Linux命令之ifconfig - 网络配置命令 ... -
我使用过的Linux命令之ll - 列出文件/目录的详细信息
2011-07-20 21:22 7210我使用过的Linux命令之ll ... -
我使用过的Linux命令之mkdir - 创建目录
2011-07-20 20:58 13690我使用过的Linux命令之mkdir - 创建目录 本文链 ... -
我使用过的Linux命令之perror - 解释错误代码
2011-07-18 20:29 25084我使用过的Linux命令之perror - 解释错误代码 ... -
我使用过的Linux命令之ping - 测试与目标主机的连通性
2011-07-16 10:46 26617我使用过的Linux命令之ping - 测试与目标主机的连通性 ...
相关推荐
### Linux命令之bc -- 浮点计算器、进制转换 #### 概述 在Linux环境中,用户经常需要处理各种计算任务。尽管Bash环境已经具备了处理整数运算的能力,但对于涉及浮点数的复杂计算,则显得力不从心。这时,`bc` 命令...
这份"bc-1.06"的源代码正是这个经典计算器程序的实现。 `bc`源代码的学习可以让你深入理解如何在C语言或类似的底层语言中构建一个解释器。`bc`程序主要由两部分组成:前端的词法分析和语法解析,以及后端的虚拟机...
中国移动BC-Linux操作系统 BC-Linux操作系统是中国移动自主研发的操作系统,基于CentOS操作系统提供商业化的系统更新和技术支持服务。该系统可以满足云计算和大数据时代的企业应用需求。 技术层面,BC-Linux基于...
在C#编程语言中,进制转换是一项基本且重要的任务,它涉及到数字在不同基数(如二进制、八进制、十进制和十六进制)之间的转换。以下将详细解释C#中如何进行进制转换。 1. **十进制到其他进制的转换**: - 要将一...
`bc-1.06` 是一个经典的 `bc` 命令的源代码版本,它是一个交互式的、高度可移植的计算器语言,广泛应用于Linux系统中。`bc` 提供了一个强大的计算环境,支持浮点运算和复数,常用于数学计算和脚本编程。在这个源码包...
位运算和进制转换是计算机科学中的基础概念,它们在编程和硬件设计中扮演着重要角色。位运算指的是对二进制数进行的基本操作,如与(AND)、或(OR)、非(NOT)、异或(XOR)以及左移(LSHIFT)、右移(RSHIFT)。...
在C#中,可以使用`BitConverter.Int32BitsToSingle()`方法,直接将32位的整数(16进制转换为10进制后)转换为浮点数,但理解上述过程有助于更好地理解浮点数的内部工作原理。 总的来说,从16进制的32位浮点数转换到...
本文将详细介绍几种常用的Linux计算器命令:`bc`、`expr`、`dc`以及如何利用`echo`和`awk`来进行计算。 #### bc —— 高级计算器 `bc`是一款非常强大的计算器工具,它支持基本的算术运算以及更高级的功能,如函数...
根据给定的文件信息,我们将深入探讨如何在C语言中实现二进制、八进制以及十六进制数转换为十进制数的算法,并将其封装到一个实用的函数中。 ### C语言实现多进制转十进制的算法 #### 1. 理解进制转换的基本原理 ...
bc-1.06.95-1.el6.i686.rpm是centos工具包。
在Linux操作系统中,命令行是用户与系统交互的主要方式之一,掌握各种命令的英文全称及其功能至关重要。本文将详细讲解部分常见的Linux命令及其用途。 1. `alias`: 创建别名,可以为复杂的命令或命令组合创建简短的...
DenseNet-BC-121-32.zip 和 DenseNet-BC-121-32-on-top.zip 是两个与深度学习相关的压缩包文件,其中包含预训练的网络权重。DenseNet 是一种卷积神经网络(Convolutional Neural Network, CNN)架构,由Gao Huang等...
6. `echo 1+2|bc -l`:使用`bc`命令进行数学运算,`-l`选项提供数学常量和函数。 7. `uname -a`:显示Linux内核版本和其他系统信息。 8. `badblocks -s /dev/sda`:扫描磁盘设备(例如`/dev/sda`)的坏道,并显示...
标题中的“bc2 十六进制对比”指的是在计算机科学和编程领域中对十六进制数据进行比较的工具或过程。BC2可能是一个特定的软件、库或者算法,用于处理和比较十六进制数值。十六进制(Hexadecimal)是计算机科学中常用...
【美的冷柜BD_BC-301KM(E)使用说明书】是用户操作和维护这款产品的关键参考资料,旨在确保用户能够安全、有效地使用美的冷柜。本说明书包含了详细的技术规格、操作指南、清洁保养建议以及安全警示等内容。 1. **...
迈瑞血球分析仪BC-5120是一款先进的医疗设备,主要用于血液成分的检测,如红细胞计数、白细胞计数、血小板计数等。在医疗领域,这种设备的数据准确性和效率至关重要。本资料包包含了该分析仪的数据传输协议、采集的...
此外,Linux还提供了许多内置工具来进行十六进制转换,例如`od`(octal dump)命令可以用于将十进制数转换为十六进制字符串,`bc`计算器支持各种数值计算,包括十进制到十六进制的转换。这些工具在日常开发和调试中...
Haier海尔冰箱BC-50ES说明书使用安装手册参数图解图示pdf电子版下载.pdf
【美的冰箱冷柜BC-45M使用说明书】 美的冰箱冷柜BC-45M是一款高效节能、设计精良的家用制冷设备,旨在为用户提供安全、便捷的食品储存环境。在使用这款产品之前,了解其功能特点、操作方法以及保养维护至关重要。本...