`

我使用过的Linux命令之bc - 浮点计算器、进制转换

阅读更多

我使用过的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命令系列总目录

 

0
0
分享到:
评论

相关推荐

    Linux命令之bc--浮点计算器、进制转换

    ### Linux命令之bc -- 浮点计算器、进制转换 #### 概述 在Linux环境中,用户经常需要处理各种计算任务。尽管Bash环境已经具备了处理整数运算的能力,但对于涉及浮点数的复杂计算,则显得力不从心。这时,`bc` 命令...

    bc-1.06 linux系统下自带的command-line计算器程序源代码

    这份"bc-1.06"的源代码正是这个经典计算器程序的实现。 `bc`源代码的学习可以让你深入理解如何在C语言或类似的底层语言中构建一个解释器。`bc`程序主要由两部分组成:前端的词法分析和语法解析,以及后端的虚拟机...

    中国移动自主研发BC-Linux操作系统 (1).pdf

    中国移动BC-Linux操作系统 BC-Linux操作系统是中国移动自主研发的操作系统,基于CentOS操作系统提供商业化的系统更新和技术支持服务。该系统可以满足云计算和大数据时代的企业应用需求。 技术层面,BC-Linux基于...

    C#进制转换

    在C#编程语言中,进制转换是一项基本且重要的任务,它涉及到数字在不同基数(如二进制、八进制、十进制和十六进制)之间的转换。以下将详细解释C#中如何进行进制转换。 1. **十进制到其他进制的转换**: - 要将一...

    bc-1.06 源码

    `bc-1.06` 是一个经典的 `bc` 命令的源代码版本,它是一个交互式的、高度可移植的计算器语言,广泛应用于Linux系统中。`bc` 提供了一个强大的计算环境,支持浮点运算和复数,常用于数学计算和脚本编程。在这个源码包...

    bc.zip_位运算_进制转换

    位运算和进制转换是计算机科学中的基础概念,它们在编程和硬件设计中扮演着重要角色。位运算指的是对二进制数进行的基本操作,如与(AND)、或(OR)、非(NOT)、异或(XOR)以及左移(LSHIFT)、右移(RSHIFT)。...

    IEEE754标准 32位16进制转浮点数

    在C#中,可以使用`BitConverter.Int32BitsToSingle()`方法,直接将32位的整数(16进制转换为10进制后)转换为浮点数,但理解上述过程有助于更好地理解浮点数的内部工作原理。 总的来说,从16进制的32位浮点数转换到...

    linux下的计算器使用

    本文将详细介绍几种常用的Linux计算器命令:`bc`、`expr`、`dc`以及如何利用`echo`和`awk`来进行计算。 #### bc —— 高级计算器 `bc`是一款非常强大的计算器工具,它支持基本的算术运算以及更高级的功能,如函数...

    C_实现二、八、十六进制数转十进制数的算法

    根据给定的文件信息,我们将深入探讨如何在C语言中实现二进制、八进制以及十六进制数转换为十进制数的算法,并将其封装到一个实用的函数中。 ### C语言实现多进制转十进制的算法 #### 1. 理解进制转换的基本原理 ...

    bc-1.06.95-1.el6.i686.rpm

    bc-1.06.95-1.el6.i686.rpm是centos工具包。

    Linux命令详称--各命令的英文全称

    在Linux操作系统中,命令行是用户与系统交互的主要方式之一,掌握各种命令的英文全称及其功能至关重要。本文将详细讲解部分常见的Linux命令及其用途。 1. `alias`: 创建别名,可以为复杂的命令或命令组合创建简短的...

    DenseNet-BC-121-32.zip&amp;&amp;DenseNet;-BC-121-32-on-top.zip

    DenseNet-BC-121-32.zip 和 DenseNet-BC-121-32-on-top.zip 是两个与深度学习相关的压缩包文件,其中包含预训练的网络权重。DenseNet 是一种卷积神经网络(Convolutional Neural Network, CNN)架构,由Gao Huang等...

    Linux命令有哪些-.docx

    6. `echo 1+2|bc -l`:使用`bc`命令进行数学运算,`-l`选项提供数学常量和函数。 7. `uname -a`:显示Linux内核版本和其他系统信息。 8. `badblocks -s /dev/sda`:扫描磁盘设备(例如`/dev/sda`)的坏道,并显示...

    bc2 十六进制对比

    标题中的“bc2 十六进制对比”指的是在计算机科学和编程领域中对十六进制数据进行比较的工具或过程。BC2可能是一个特定的软件、库或者算法,用于处理和比较十六进制数值。十六进制(Hexadecimal)是计算机科学中常用...

    Midea美的冰箱冷柜BD_BC-301KM(E)使用说明书用户手册图解图示pdf电子版下载.pdf

    【美的冷柜BD_BC-301KM(E)使用说明书】是用户操作和维护这款产品的关键参考资料,旨在确保用户能够安全、有效地使用美的冷柜。本说明书包含了详细的技术规格、操作指南、清洁保养建议以及安全警示等内容。 1. **...

    迈瑞血球分析仪BC-5120传输协议以及数据.rar

    迈瑞血球分析仪BC-5120是一款先进的医疗设备,主要用于血液成分的检测,如红细胞计数、白细胞计数、血小板计数等。在医疗领域,这种设备的数据准确性和效率至关重要。本资料包包含了该分析仪的数据传输协议、采集的...

    Hex-conversion.zip_conversion_linux 十六进制

    此外,Linux还提供了许多内置工具来进行十六进制转换,例如`od`(octal dump)命令可以用于将十进制数转换为十六进制字符串,`bc`计算器支持各种数值计算,包括十进制到十六进制的转换。这些工具在日常开发和调试中...

    Haier海尔冰箱BC-50ES说明书使用安装手册参数图解图示pdf电子版下载.pdf

    Haier海尔冰箱BC-50ES说明书使用安装手册参数图解图示pdf电子版下载.pdf

    Midea美的冰箱冷柜BC-45M使用说明书用户手册图解图示pdf电子版下载.pdf

    【美的冰箱冷柜BC-45M使用说明书】 美的冰箱冷柜BC-45M是一款高效节能、设计精良的家用制冷设备,旨在为用户提供安全、便捷的食品储存环境。在使用这款产品之前,了解其功能特点、操作方法以及保养维护至关重要。本...

Global site tag (gtag.js) - Google Analytics