iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux bc命令实现数学计算器
  • 398
分享到

Linux bc命令实现数学计算器

Linuxbc计算器Linuxbc数学计算器 2022-06-03 14:06:48 398人浏览 独家记忆
摘要

Bash shell 内置了对整数运算的支持,但是并不支持浮点运算,而 linux bc 命令可以很方便的进行浮点运算,当然整数运算也不再话下。 bc 甚至可以称得上是一种编程语言了,它支持变量、数组、输入输出、分

Bash shell 内置了对整数运算的支持,但是并不支持浮点运算,而 linux bc 命令可以很方便的进行浮点运算,当然整数运算也不再话下。

bc 甚至可以称得上是一种编程语言了,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素,所以 Linux 手册中是这样来描述 bc 的:

An arbitrary precision calculator language

翻译过来就是“一个任意精度的计算器语言”。

在终端输入bc命令,然后回车即可进入 bc 进行交互式的数学计算。在 Shell 编程中,我们也可以通过管道和输入重定向来使用 bc。

本节我们先学习如何在交互式环境下使用 bc,然后再学习如何在 Shell 编程中使用 bc,这样就易如反掌了。

从终端进入 bc

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

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

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

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

在交互式环境下使用 bc

使用 bc 进行数学计算是非常容易的,像平常一样输入数学表达式,然后按下回车键就可以看到结果,请看下图。

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

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

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

内置变量

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

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

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

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

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

注意: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选项,表示启用数学库。请看下面的例子:

在一行中使用多个表达式

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

在 Shell 中使用 bc 计算器

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

  • 管道是 Linux 进程间的一种通信机制,它可以将前一个命令(进程)的输出作为下一个命令(进程)的输入,两个命令之间使用竖线|分隔。
  • 通常情况下,一个命令从终端获得用户输入的内容,如果让它从其他地方(比如文件)获得输入,那么就需要重定向。

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

借助管道使用 bc 计算器

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


echo "expression" | bc

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

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


variable=$(echo "expression" | bc)

variable 就是变量名。

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


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

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


[jb51.net]$ echo "scale=4;3*8/7"|bc
3.4285
[jb51.net]$ echo "scale=4;3*8/7;last*5"|bc
3.4285
17.1425

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


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

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

【实例4】进制转换:


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

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

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


variable=$(bc << EOF
expressions
EOF
)

其中,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 $n
30

如果你有大量的数学计算,那么使用输入重定向就比较方便,因为数学表达式可以换行,写起来更加清晰明了。

到此这篇关于Linux bc命令实现数学计算器的文章就介绍到这了,更多相关Linux bc数学计算器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Linux bc命令实现数学计算器

本文链接: https://www.lsjlt.com/news/11609.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Linux中使用bc命令实现一个数学计算器
    本篇文章为大家展示了如何在Linux中使用bc命令实现一个数学计算器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是Linux系统Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基...
    99+
    2023-06-08
  • 如何在Linux中使用命令行计算器GNU bc
    这篇文章主要讲解了“如何在Linux中使用命令行计算器GNU bc”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Linux中使用命令行计算器GNU bc”吧!每个现代的Linux桌面发...
    99+
    2023-06-13
  • 如何使用GNU bc在Linux Shell中进行数学运算
    本篇内容介绍了“如何使用GNU bc在Linux Shell中进行数学运算”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在 shell 中使...
    99+
    2023-06-15
  • 在Linux命令行中使用计算器的命令有哪些
    这篇文章给大家分享的是有关在Linux命令行中使用计算器的命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 如何在 Linux 中使用 bc 执行计算bc 是一种以交互式语句执行的方式支持任意精度的数...
    99+
    2023-06-15
  • Linux计数器WC命令怎么用
    这篇文章主要介绍了Linux计数器WC命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux wc命令用于计算字数,利用wc指令我们可以计算文件的Byte数、字数...
    99+
    2023-06-28
  • 学Linux云计算,Linux的十条危险指令
    将会在这篇文章向你介绍十条命令,但你最好不要“尝试”着去使用。当然,以下命令通常都是在 root 权限下才能将愚蠢发挥到无可救药;在普通用户身份下,破坏的只是自己的一亩三分地。 rm -rf 命令rm -rf 命令是删除文件夹及其内容最快的...
    99+
    2023-06-04
  • Linux命令行中常用的计算器有哪些
    本文小编为大家详细介绍“Linux命令行中常用的计算器有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux命令行中常用的计算器有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1)bcbc在默认的情...
    99+
    2023-06-28
  • java如何实现科学计算器
    这篇文章主要介绍了java如何实现科学计算器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java如何实现科学计算器文章都会有所收获,下面我们一起来看看吧。实现思路通过点击按钮可以得到一个算术表达式,并且它是一...
    99+
    2023-07-02
  • Python语言实现科学计算器
    本文实例为大家分享了Python语言实现科学计算器的具体代码,供大家参考,具体内容如下 自学Python语言一个月,还是小白,发一个科学计算器的代码,希望大家批评指正,共勉嘛。 c...
    99+
    2024-04-02
  • 如何从命令行关闭Linux计算机
    这篇文章主要介绍了如何从命令行关闭Linux计算机,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、关机如果您已经使用了Linux机器,那么简单地关闭它的解决方案就是使用通过...
    99+
    2023-06-16
  • python实现Linux命令wget
    #!/bin/python #coding:utf-8 def wget(url,new_name=""): ''' wget封装,需提供下载地址,新文件名参数可省略 ...
    99+
    2023-01-31
    命令 python Linux
  • Swift实现复数计算器
    本文实例为大家分享了Swift实现复数计算器的具体代码,供大家参考,具体内容如下 Swift使用笛卡尔和极坐标进行转换的复数计算器 import Foundation struct ...
    99+
    2024-04-02
  • C++实现分数计算器
    分数计算器项目设计,供大家参考,具体内容如下 一、问题描述及功能要求 1、分数计算器程序的每种功能都可以用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相...
    99+
    2024-04-02
  • Android实现横屏切换科学计算器
    本文实例为大家分享了Android实现横屏切换科学计算器的具体代码,供大家参考,具体内容如下 简单计算器设计,实现以下功能: 1、竖屏时能实现基本的加减乘除运算、回退和清空输入。 2...
    99+
    2024-04-02
  • php如何实现linux命令
    这篇文章主要为大家展示了“php如何实现linux命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现linux命令”这篇文章吧。php实现linux命令的方法:1、创建一个PHP示...
    99+
    2023-06-21
  • 如何实现Linux Shell脚本数学运算
    本篇内容介绍了“如何实现Linux Shell脚本数学运算”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在任何一种编程语言中,算术运算都是必...
    99+
    2023-06-09
  • 通过Golang实现linux命令ls命令(命令行工具构建)
    目录ls 命令os.Args 读取参数pflag小结ls 命令 要实现ls,首先先我们复习一下ls命令。 ls不加任何参数,表示查询当前目录下的文件/文件夹ls后面加上路径,列出所有...
    99+
    2023-01-13
    Golang实现命令行工具 Golang命令行工具 Golang命令行
  • Qt实现可以计算大数的简单计算器
    目录1、简介2、作品演示3、重点原理讲解4、代码主体框架1、简介 计算器是我们生活中很常见的东西,它可以由多种语言多种方式来实现,今天我想讲的是基于C++语言,由QT实现的可以计算大...
    99+
    2022-12-12
    Qt 大数运算 计算器 Qt 计算器 Qt 大数运算
  • Java实现计算器设计
    本文实例为大家分享了Java实现计算器设计的具体代码,供大家参考,具体内容如下 需求分析 目的是实现一个基于Java的可以求解带括号加减乘除表达式的带界面的计算器。 ...
    99+
    2024-04-02
  • linux中如何实现tree命令
    这篇文章主要为大家展示了“linux中如何实现tree命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中如何实现tree命令”这篇文章吧。tree命令是以图形化的树结构打印文件和目录...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作