文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在Linux中使用bc命令实现一个数学计算器

2023-06-08 00:34

关注

本篇文章为大家展示了如何在Linux中使用bc命令实现一个数学计算器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

从终端进入 bc

在终端输入 bc 命令,然后回车,就可以进入 bc,请看下图:

如何在Linux中使用bc命令实现一个数学计算器

bc 命令还有一些选项,可能你会用到,请看下表。


选项说明
-h | --help帮助信息
-v | --version显示命令版本信息
-l | --mathlib使用标准数学库
-i | --interactive强制交互
-w | --warn显示 POSIX 的警告信息
-s | --standard使用 POSIX 标准来处理
-q | --quiet不显示欢迎信息

例如你不想输入 bc 命令后显示一堆没用的信息,那么可以输入bc -q

如何在Linux中使用bc命令实现一个数学计算器

在交互式环境下使用 bc

使用 bc 进行数学计算是非常容易的,像平常一样输入数学表达式,然后按下回车键就可以看到结果,请看下图。如何在Linux中使用bc命令实现一个数学计算器

值得一提的是,我们定义了一个变量 n,然后在计算中也使用了 n,可见 bc 是支持变量的。

除了变量,bc 还支持函数、循环结构、分支结构等常见的编程元素,它们和其它编程语言的语法类似。下面我们定义一个求阶乘的函数:

如何在Linux中使用bc命令实现一个数学计算器

其实我们很少使用这么复杂的功能,大部分情况下还是把 bc 作为普通的数学计算器,求一下表达式的值而已,所以大家不必深究,了解一下即可。

内置变量

bc有四个内置变量,我们在计算时会经常用到,如下表所示:


变量名作 用
scale指定精度,也即小数点后的位数;默认为 0,也即不使用小数部分。
ibase指定输入的数字的进制,默认为十进制。
obase指定输出的数字的进制,默认为十进制。
last 或者 .表示最近打印的数字

【实例1】scale 变量用法举例:

如何在Linux中使用bc命令实现一个数学计算器

刚开始的时候,10/3 的值为 3,不带小数部分,就是因为 scale 变量的默认值为 0;后边给 scale 指定了一个大于 0 的值,就能看到小数部分了。

【实例2】ibase 和obase 变量用法举例:

如何在Linux中使用bc命令实现一个数学计算器

注意:obase 要尽量放在 ibase 前面,因为 ibase 设置后,后面的数字都是以 ibase 的进制来换算的。

内置函数

除了内置变量,bc 还有一些内置函数,如下表所示:


函数名作用
s(x)计算 x 的正弦值,x 是弧度值。
c(x)计算 x 的余弦值,x 是弧度值。
a(x)计算 x 的反正切值,返回弧度值。
l(x)计算 x 的自然对数。
e(x)求 e 的 x 次方。
j(n, x)贝塞尔函数,计算从 n 到 x 的阶数。

要想使用这些数学函数,在输入 bc 命令时需要使用-l选项,表示启用数学库。请看下面的例子:

如何在Linux中使用bc命令实现一个数学计算器

在一行中使用多个表达式

在前边的例子中,我们基本上是一行一个表达式,这样看起来更加舒服;如果你愿意,也可以将多个表达式放在一行,只要用分号;隔开就行。请看下面的例子:

如何在Linux中使用bc命令实现一个数学计算器

在 Shell 中使用 bc 计算器

在 Shell 脚本中,我们可以借助管道或者输入重定向来使用 bc 计算器。

此处我们并不打算展开讲解管道和重定向,不了解的小伙伴请自行百度。

借助管道使用 bc 计算器

如果读者希望直接输出 bc 的计算结果,那么可以使用下面的形式:

echo "expression" | bc

expression就是希望计算的数学表达式,它必须符合 bc 的语法,上面我们已经进行了介绍。在 expression 中,还可以使用 Shell 脚本中的变量。

使用下面的形式可以将 bc 的计算结果赋值给 Shell 变量:

variable=$(echo "expression" | bc)

variable 就是变量名。

【实例1】最简单的形式:

[jb51.net]$ echo "3*8"|bc24[jb51.net]$ ret=$(echo "4+9"|bc)[jb51.net]$ echo $ret13

【实例2】使用 bc 中的变量:

[jb51.net]$ echo "scale=4;3*8/7"|bc3.4285[jb51.net]$ echo "scale=4;3*8/7;last*5"|bc3.428517.1425

【实例3】使用 Shell 脚本中的变量:

[jb51.net]$ x=4[jb51.net]$ echo "scale=5;n=$x+2;e(n)"|bc -l403.42879

在第二条命令中,$x表示使用第一条 Shell 命令中定义的变量,n是在 bc 中定义的新变量,它和 Shell 脚本是没关系的。

【实例4】进制转换:

#十进制转十六进制[mozhiyan@localhost ~]$ m=31[mozhiyan@localhost ~]$ n=$(echo "obase=16;$m"|bc)[mozhiyan@localhost ~]$ echo $n1F#十六进制转十进制[mozhiyan@localhost ~]$ m=1E[mozhiyan@localhost ~]$ n=$(echo "obase=10;ibase=16;$m"|bc)[mozhiyan@localhost ~]$ echo $n30

借助输入重定向使用 bc 计算器

可以使用下面的形式将 bc 的计算结果赋值给 Shell 变量:

variable=$(bc << EOFexpressionsEOF)

其中,variable是 Shell 变量名,express是要计算的数学表达式(可以换行,和进入 bc 以后的书写形式一样),EOF是数学表达式的开始和结束标识(你也可以换成其它的名字,比如 aaa、bbb 等)。

请看下面的例子:

[jb51.net]$ m=1E[jb51.net]$ n=$(bc << EOF> obase=10;> ibase=16;> print $m> EOF> )[jb51.net]$ echo $n30

上述内容就是如何在Linux中使用bc命令实现一个数学计算器,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯