linux中如何使用bc 工具

76次阅读
没有评论

共计 1727 个字符,预计需要花费 5 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 linux 中如何使用 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+12+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 来重置输出的进制系统。

以上是“linux 中如何使用 bc 工具”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1727字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)