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

Bash代码 c25758a16342894aa0160f548bd2466f.gif 1902c03ba7e809c3f582db1a6190cf96.png

888d2bca4dccd49e74c29c7ffc9a49e6.gif

#!/bin/bash

# Shell program/script to read the base and height of a traingle and find its area

# -------------------------------------------------------------------------

# Copyright (c)2005nixCraft project 

# This script is licensed under GNU GPL version2.0or 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"

#!/bin/bash # Shell program/script to read the base and height of a traingle and find its area # ------------------------------------------------------------------------- # Copyright (c) 2005 nixCraft project # 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代码 c25758a16342894aa0160f548bd2466f.gif 1902c03ba7e809c3f582db1a6190cf96.png

888d2bca4dccd49e74c29c7ffc9a49e6.gif

# usage: calc_sum  

# 计算两个数的和

calc_sum()

{

bc -q <

$1+$2

EOF

}

# usage: calc_free 

# 计算费用,单价0.05元

calc_fee()

{

bc -q <

0.05*$1

EOF

}

# usage: calc_sum # 计算两个数的和 calc_sum() { bc -q < # 计算费用,单价0.05元 calc_fee() { bc -q <

将以上代码粘贴到终端。

[root@web ~]# # usage: calc_sum

[root@web ~]# #

计算两个数的和

[root@web ~]# calc_sum()

> {

> bc -q

<

> $1+$2

> EOF

> }

[root@web ~]#

[root@web ~]# # usage: calc_free

[root@web ~]# #

计算费用,单价0.05元

[root@web ~]# calc_fee()

> {

> bc -q

<

> 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 ~]#

问题思考

相关资料

【4】LAMP China linux

bc命令使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值