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

 

Linux系统之bc命令详解 bc(Basic Calculator)是一个在类 Unix 系统中常用的任意精度计算器语言。它不仅能够执行简单的数学运算,还支持变量、数组、用户自定义函数以及基本的编程结构如条件语句和循环。这使得bc不仅可以作为一个命令行计算器使用,还可以编写复杂的数学计算脚本。 阅读详情

相关推荐

16进制转换工具.7z

超好用的16进制与ASCILL互转工具,16进制与浮点数互转工具。

浮点数在线转hex计算器

浮点数在线转hex计算器

key12315的专栏 1万+

IEEE浮点数转换工具

将任何数据类型的转换为IEEE标准的二进制码或十六进制码,使用方便,功能强大

在线进制转换

嵌入式程序进制转换(32位浮点型)

weixin_59324525的博客 6192

手机直连卫星上网,3GPP R17/R18到底做了哪些技术升级?(IoT/NR NTN详解)

本文深入解析了3GPP R17/R18标准中手机直连卫星上网的技术升级,重点介绍了IoT NTN与NR NTN两项关键技术。R17通过星历辅助补偿算法和多普勒频移控制,实现了智能手机直连卫星的突破;R18则进一步优化移动性、支持高频段和星上本地交换,提升用户体验。这些技术为物联网和5G/6G通信开辟了新可能。

weixin_33701251的博客 617

共模电感在EMI滤波中的实战应用与设计技巧

本文深入探讨了共模电感在EMI滤波中的关键作用与设计技巧,涵盖电感值选择、饱和电流风险、磁芯材料性能及绕组工艺等实战经验。通过具体案例解析,展示了共模电感在开关电源、高速接口及汽车电子中的高效应用,帮助工程师解决电磁兼容问题并提升信号完整性。

weixin_27051161的博客 416

浮点数-十六进制转换

所以网站是阅读顺序: 0x3ea45a1c, 由左到右是 高字节-->低字节,VS是存储顺序: 由左到右 是 低字节-->高字节。

wuqi1003的专栏 7239

让 AI 变聪明的 20 条指令:如何让大模型回答得更精准、更专业、更实事求是

让 AI 变聪明,本质上不是写几句神奇咒语,而是把你的任务表达得更清楚,把事实标准设得更严格,把输出格式规定得更明确,把不确定性管理得更认真,把历史对话利用得更充分。大模型的强项是语言生成、信息组织、模式归纳和方案扩展;弱项是事实核验、实时更新、责任判断和对模糊意图的准确猜测。好的指令,就是在用人的判断弥补模型的弱点,让模型把强项发挥在正确的地方。

Sumarua的博客 1480

Float,Double转16进制

double

sun007700的专栏 2457

Oracle VM VirtualBox虚拟机网络配置与静态IP设置实战

本文详细讲解了Oracle VM VirtualBox虚拟机的网络配置,特别是如何设置静态IP以实现稳定访问。文章对比了NAT、桥接、仅主机等网络模式,并提供了从VirtualBox管理界面到Linux系统内部的完整配置步骤,帮助用户解决IP变动问题,构建可靠的本地开发测试环境。

weixin_28365523的博客 510

SAP_MM模块采购订单显示含税价&不含税简介

不含税价(Net Price):基础商品价格,不包含税金。含税价(Gross Price):基础价格加上适用税金后的总价。在SAP中,采购订单通常以不含税价为基础,通过配置税码和定价方案,系统会自动计算含税总价。

我小时候很黑的博客 2300

在线进制转换工具网址

另外也可以进行多种其它进制得转换,如:2进制、4进制、8进制、12进制等。,也可以进行16进制转浮点数等转换,比较方便;16进制和浮点数在线相互转换;

weixin_45543630的博客 3969

基于改进Unet的多场景水果图像分割与分类研究

本文针对复杂场景下的水果图像分割问题,提出了一种改进Unet模型。通过构建包含8类水果、3种成熟度及多种干扰场景的数据集,采用ResNet50与MobileNetV3作为骨干网络,并在跳跃连接层集成CBAM注意力机制。实验表明,改进模型在测试集上达到91.6%的mIoU,推理速度提升23%,特别在重叠水果和低光照场景表现突出。研究为农业视觉检测提供了有效解决方案。

AI的内部世界的博客 303

linux 计算器 bc

bc计算器是linux自带的计算器,方便好用

路漫漫其修远兮 吾将上下而求索 1704

BMP280气压传感器原理图设计,已量产(压力传感器)

做嵌入式项目时,“小而精” 的传感器模块永远是刚需 —— 尤其是需要同时测气压和温度的场景,比如无人机定高、环境监测节点、穿戴设备等。最近捣鼓了一款 BMP280 的 Breakout 板,封装做得很紧凑,同时兼顾了稳定性和兼容性,这里单聊硬件设计细节。

不脱发的程序猿 299

Python全栈入门到实战【进阶篇 1】类与对象:面向对象编程的基石

Python中定义类使用**class关键字**,创建对象使用**类名()**(类似调用函数),语法简洁,我们从最基础的空类开始,逐步拆解。class# 定义空的学生类,pass表示占位,无实际内容 class Student : pass编码规范:类名遵循大驼峰命名法(每个单词首字母大写,无下划线),如StudentCarPhone,这是Python官方推荐的PEP8规范,便于区分类和其他标识符。实例方法必须定义在类内部;实例方法的第一个参数必须是self(名称可自定义,如this。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3403

LINUX任意精度计算器BC用法

用途说明 Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。手册页上说bc是An arbitrary precision calculator language,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断、循环等,可以说是很强大的,但是我在实际中还没有找到需要这个用途的场合 。另外一个用途就是用

huangmr的专栏 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux中w r x数学代码,Linux bc命令实现数学计算器

bash shell 内置了对整数运算的支持,但是并不支持浮点运算,而 linux bc 命令可以很方便的进行浮点运算,当然整数运算也不再话下。bc 甚至可以称得上是一种编程语言了,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素,所以 linux 手册中是这样来描述 bc 的:an arbitrary precision calculator language翻译过来就是“一...

weixin_42509267的博客 230

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linux命令之bc命令

一、命令简介   bc是一种支持任意精度数字的语言,支持语句的交互式执行。在语法上与C编程语言有一些相似之处。通过命令行选项可以使用标准数学库。如果需要,将在处理任何文件之前定义数学库。bc首先按照列出的顺序处理命令行上列出的所有文件中的代码。处理完所有文件后,bc从标准输入中读取。所有代码在读取时执行。如果文件中包含停止处理器的命令,bc将永远不会从标准输入中读取。支持的运算包括: + 加法 - 减法 * 乘法 / 除法 ^ 指数 % 余数 二、使用示例 1、安装命令 [root@s141 ~]#

月生的静心苑 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

用途说明 Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。手册页上说bc是An arbitrary precision calculator language,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断、循环等,可以说是很强大的,但是我在实际中还没有找到需要这个用途的场合 。另外一个用途就

andy572633的专栏 2366

Linux命令之计算器bc

`bc` 命令的全称是`Binary Calculator`,该命令支持任意精度的运算,并且是在交互执行的情况下。该命令能够很方便的进行浮点数运算和整数运算。

二木成林 5082

linux bc 三角函数,Linux命令之bc - 浮点计算器、进制转换

来源:http://codingstandards.iteye.com/blog/793734用途说明Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。手册页上说bc是Anarbitrary precision calculatorlanguage,即一个任意精度的计算语言,注意是一种语言,它提供了一些语法结构,比如条件判断、循环...

weixin_30682043的博客 937

Linux基本命令篇 —— bc命令

bc是Linux系统中强大的任意精度计算器语言,支持基本运算、变量、函数、循环等编程特性。基本用法包括启动bc、执行加减乘除等运算;高级特性可设置小数精度、使用数学函数与条件语句。实际应用上,bc能处理复杂表达式、进制转换及文件计算,常用选项如-l加载数学库、-q静默模式等。尽管可能产生POSIX兼容性警告,但不影响计算结果。bc特别适合高精度和复杂计算任务,能显著提升Linux环境下的数学运算效率。

祯的博客 2339

linux之bc命令使用详解_【原创】linux命令bc使用详解

最近经常要在linux下做一些进制转换,看到了可以使用bc命令,如下:echo "obase=10;ibase=16;CFFF" | bc用完以后就对bc进行了进一步的了解,man bc里面有详细的使用说明。1.是什么,怎么用bc - An arbitrary precision calculator language 一个任意精度的计算器语言。从他的使用上来看,能够对计算公式的语法进行解释...

weixin_42336364的博客 4624

linux之bc命令使用详解_Linux命令bc使用详解

bc 命令是任意精度计算器语言,通常在linux下当计算器用,可以做基本的数学运算及进制转换。bc命令参数-i:强制进入交互式模式;-l:定义使用的标准数学库;-w:对POSIX bc的扩展给出警告信息;-q:不显示bc环境信息,直接运行命令;-v:显示指令版本信息;-h:显示指令的帮助信息。bc命令常用的运算符:+ 加法– 减法* 乘法/ 除法^ 指数% 余数bc运算实例1、运行bc...

weixin_34883093的博客 4965

Shell计算命令:bc命令详解

使用bc -q命令,回车即可, 直接进行计算器进行运算在 Shell 脚本中,我们可以借助管道使用 bc 计算器。将计算表达式输出给bc去执行, 特点类似于文件中输入,可以输入多行表达式, 更加清晰if条件判断逻辑控制语句linux任何命令的的执行都会有一个退出状态, 无论是内置命令还是外部文件命令. 还是自定义的 Shell 函数,当它退出(运行结束)时,都会返回一个比较小的整数值给调用(使用)它的程序,这就是命令的退出状态。

qq_44949488的博客 4516
上一篇: 我使用过的Linux命令之unrar - 解压rar文件
下一篇: 我使用过的Linux命令之join - 根据关键字合并数据文件
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值