文档章节

linux 命令行中的计算器

l
 linux-tao
发布于 2017/08/30 23:21
字数 1298
阅读 25
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

假如你在一个图形桌面环境中需要一个计算器时,你可能只需要一路进行点击便可以找到一个计算器。例如,Fedora 工作站中就已经包含了一个名为 Calculator 的工具。它有着几种不同的操作模式,例如,你可以进行复杂的数学运算或者金融运算。但是,你知道吗,命令行也提供了一个与之相似的名为 bc 的工具?

bc 工具可以为你提供的功能可以满足你对科学计算器、金融计算器或者是简单计算器的期望。另外,假如需要的话,它还可以从命令行中被脚本化。这使得当你需要做复杂的数学运算时,你可以在 shell 脚本中使用它。

因为 bc 也被用于其他的系统软件,例如 CUPS 打印服务,所以它可能已经在你的 Fedora 系统中被安装了。你可以使用下面这个命令来进行检查:

dnf list installed bc

假如因为某些原因你没有在上面命令的输出中看到它,你可以使用下面的这个命令来安装它:

sudo dnf install bc

用 bc 做一些简单的数学运算

使用 bc 的一种方式是进入它自己的 shell。在那里你可以按行进行许多次计算。当你键入 bc 后,首先出现的是有关这个程序的警告:

$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.

现在你可以按照每行一个输入运算式或者命令了:

1+1

bc 会回答上面计算式的答案是:

2

在这里你还可以执行其他的命令。你可以使用 加(+)、减(-)、乘(*)、除(/)、圆括号、指数符号(^) 等等。请注意 bc 同样也遵循所有约定俗成的运算规则,例如运算的先后顺序。你可以试试下面的例子:

(4+7)*2
4+7*2

若要退出 bc 可以通过按键组合 Ctrl+D 来发送 “输入结束”信号给 bc 。

使用 bc 的另一种方式是使用 echo 命令来传递运算式或命令。下面这个示例就是计算器中的 “Hello, world” 例子,使用 shell 的管道函数(|) 来将 echo 的输出传入 bc 中:

echo '1+1' | bc

使用 shell 的管道,你可以发送不止一个运算操作,你需要使用分号来分隔不同的运算。结果将在不同的行中返回。

echo '1+1; 2+2' | bc

精度

在某些计算中,bc 会使用精度的概念,即小数点后面的数字位数。默认的精度是 0。除法操作总是使用精度的设定。所以,如果你没有设置精度,有可能会带来意想不到的答案:

echo '3/2' | bc
echo 'scale=3; 3/2' | bc

乘法使用一个更复杂的精度选择机制:

echo '3*2' | bc
echo '3*2.0' | bc

同时,加法和减法的相关运算则与之相似:

echo '7-4.15' | bc

其他进制系统

bc 的另一个有用的功能是可以使用除了十进制以外的其他计数系统。例如,你可以轻松地做十六进制或二进制的数学运算。可以使用 ibase 和 obase 命令来分别设定输入和输出的进制系统。需要记住的是一旦你使用了 ibase,之后你输入的任何数字都将被认为是在新定义的进制系统中。

要做十六进制数到十进制数的转换或运算,你可以使用类似下面的命令。请注意大于 9 的十六进制数必须是大写的(A-F):

echo 'ibase=16; A42F' | bc
echo 'ibase=16; 5F72+C39B' | bc

若要使得结果是十六进制数,则需要设定 obase :

echo 'obase=16; ibase=16; 5F72+C39B' | bc

下面是一个小技巧。假如你在 shell 中做这些十六进制运算,怎样才能使得输入重新为十进制数呢?答案是使用 ibase 命令,但你必须设定它为在当前进制中与十进制中的 10 等价的值。例如,假如 ibase 被设定为十六进制,你需要输入:

ibase=A

一旦你执行了上面的命令,所有输入的数字都将是十进制的了,接着你便可以输入 obase=10 来重置输出的进制系统。

结论

上面所提到的只是 bc 所能做到的基础。它还允许你为某些复杂的运算和程序定义函数、变量和循环结构。你可以在你的系统中将这些程序保存为文本文件以便你在需要的时候使用。你还可以在网上找到更多的资源,它们提供了更多的例子以及额外的函数库。快乐地计算吧!

via: https://fedoramagazine.org/bc-command-line-calculator/

作者:Paul W. Frields 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

原文来自:https://linux.cn/article-7653-1.html

本文地址:http://www.linuxprobe.com/linux-cmd-calculator.html

l
粉丝 21
博文 1008
码字总数 1130720
作品 0
深圳
运维
私信 提问
加载中
请先登录后再评论。
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
Linux 反汇编工具--LDasm

LDasm (Linux 反汇编工具) 是一个基于 Perl/TK 的 objdump/binutils 图形化工具,试图模仿 W32Dasm 工具的外观。可搜索相互参照,将代码从 GAS 转换成 MASM 风格代码等等。...

匿名
2013/01/22
5.4K
1
基于 Debian 的 Linux 发行版--Kali Linux

Kali Linux(以前叫做 BackTrack)是一份基于 Debian 的发行,它带有一套安全和计算机取证工具。其特色在于及时的安全更新,对 ARM 架构的支持,有四种流行的桌面环境供选择,以及能平滑升级...

匿名
2013/03/14
3.5W
10
Linux 多屏幕管理软件--XRandR

XRandR是X Rotate and Reflect Extension(改变大小与旋转扩充)的缩写,用来在命令行界面中对linux系统中的 X窗口系统的多屏幕做出一些设定的软件,能更改外接屏幕的大小、分辨率等...

匿名
2012/10/22
3K
0
基于 Debian 的 Linux 系统--Raspbian

针对 Raspberry Pi 专门优化、基于 Debian 的 Raspbian OS。它面向 Raspberry Pi 硬件(armhf 处理器架构)而做了优化。 这款 OS 对浮点运算有更好的支持,能为用户带来更快的上网浏览体验。...

匿名
2012/11/06
3.2W
4

没有更多内容

加载失败,请刷新页面

加载更多

数据库高频面试点,事务/乐观锁/悲观锁/CAS/MySQL存储引擎

事务的ACID特性是什么? 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读...

osc_45536bvu
38分钟前
16
0
大数据BI软件助力企业数字化转型

当下,「新基建」势头正盛,随着“新基建”成为热议话题,数字化也随之成为企业面临的新机遇和新挑战。新基建的核心就是数据,数据是数字经济和企业数字化转型的生产要素和发展动力。 再看看...

osc_0boqdoe2
40分钟前
0
0
凯旋创投来志刚:基因治疗新时代,大戏刚刚开始

  2017 年,全球第一个基因治疗方法 CAR-T 细胞药物 Kymriah 获得 FDA 上市批准,从此掀起了基因治疗的热潮。随着相关技术和政策的不断成熟,基因治疗市场也随之扩大。根据德勤发布的《引领...

osc_k3vwonkw
41分钟前
10
0
LightningChart.NET使用两个BarSeries创建简单的2D图表

本教程介绍了如何使用两个BarSeries创建简单的2D图表。 BarSeries将数据值表示为矩形条,并且可以用于以非常清晰的方式可视化数据之间的差异和方差。 在本教程中,BarSeries用于表示两年期间...

roffey
42分钟前
0
0
Mybatis trim 标签的 2 个妙用!

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! mybatis的trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼...

osc_x03qsedc
42分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部