Linux里隐藏的计算器,你知道它的奥秘吗?

大家都知道,windows下有个计算器工具,我们在工作生活中经常使用到它。但是,你可知Linux下也同样有个计算器吗?

当然,良许说的是命令行下的计算器工具,而不是界面型的计算器。良许是Linux应用开发工程师,平时基本是在命令行下工作,所以对于界面类的操作良许也不是非常擅长。

启动计算器

启动这个命令行计算器很简单,只需在终端下输入bc即可。bc是英语basic calculator的缩写。退出计算器也很简单,只需输入quit即可。

选项

当然,这个计算器也是可以带选项的,常用的选项如下:

-i:强制进入交互式模式;

-l:定义使用的标准数学库;

-w:对POSIX bc的扩展给出警告信息;

-q:不打印正常的GNU bc环境信息;

-v:显示指令版本信息;

-h:显示指令的帮助信息。

基本运算

启动计算器之后,就可以在里面进行计算了。基本的运算如下:

+ 加法

- 减法

  • 乘法

/ 除法

^ 指数

% 余数

当然,如果只支持这些运算的话,那也太小儿科了,它的强大之处还在后头。

表达式运算

如果要计算一个表达示,直接在bc里输入表达式即可。bc会将变量存储,其它表达式也可以直接使用这个变量。

进制切换

作为一个程序员,我们经常与二进制,十进制,十六进制进行打交道,bc当然也支持这些操作。输入和输出的数系基分别存储在ibase和obase变量中,默认值为10,有效的数值是2到16。也就是说,我们除了常规的2、8、10、16进制,还可以使用3、5、7、9等进制。

但是,在进行设置的时候,一定要先设置obase,再设置ibase。因为如果先设置ibase的话,再设置obase时,obase等号后面的数字就会被认为是ibase设置的进制值。

精度调整

bc默认的精度是0,也就是说,bc是默认以整数的方式进行存储。我们可以通过设置scale这个变量来进行调整精度。

使用内置函数

除了简单的算术操作符,bc还通过外部的数学函数库来提供许多高级的数学函数。此时,应该使用-l选项。常用的函数如下:

N的二次方根 sqrt(N)

X的正弦(X是弧度) s(X)

X的余弦(X是弧度) c(X)

X的反正弦(返回值是弧度) a(X)

X的自然对数: l(X)

X的指数对数: e(X)

编程运算

作为一个计算语言,bc支持简单的声明(变量赋值、中断、返回等)、复合语句(if、while、for loop等)和自定义函数。这个功能就比较高级,更详细的内容可以参考官方指南。

通过管道操作

直接上例子:

也能够使用HERE 命令:

能够使用内置的变量 last 引用上一次的结果:

last 也能够用 点号取代:

非交互界面下使用bc

到目前为止,我们一直在交互界面下使用bc。不过更加流行的使用bc的方法是在没有交互界面的脚本中运行bc。这种情况下,你可以使用echo命令并且借助管道来向bc发送输入内容。

运行结果:

一个简单的计算三角形面积的程序

进行结果:

结语

bc这个命令行计算器非常强大,至少比window自带的计算器要强大很多。这个工具特别适合linux开发人员,在无需打开手机计算器的情况下,很方便的就可以进行数学运算。同时,也可以编写脚本进行更复杂的数学运算。更强大的功能还有待你的发现!

更多精彩内容,请关注公众号良许Linux,公众内回复1024可免费获得5T技术资料,包括:Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能,等等。公众号内回复进群,邀请您进高手如云技术交流群。

原文地址:http://blog.51cto.com/yychuyu/2298072

时间: 2024-08-12 20:06:37

Linux里隐藏的计算器,你知道它的奥秘吗?的相关文章

curses不是linux里默认的C函数库

今天在调试一个贪吃蛇程序时,出现如下错误: [[email protected] c++]$ g++ snack.cpp -o snack/tmp/ccCuZ3Jm.o:在函数‘playgame(int, int)’中:snack.cpp:(.text+0xce):对‘erase’未定义的引用snack.cpp:(.text+0xed):对‘mvprintw’未定义的引用snack.cpp:(.text+0x140):对‘mvprintw’未定义的引用snack.cpp:(.text+0x166

linux里source、sh、bash、./有什么区别(转)

add by zhj: 主要不同是,source是在当前shell中执行脚本,而sh, bash, ./是在当前shell的child shell中执行脚本 原文:http://www.cnblogs.com/pcat/p/5467188.html 在linux里,source.sh.bash../都可以执行shell script文件,那它们有什么不同吗? ----------- 1.source source a.sh 在当前shell内去读取.执行a.sh,而a.sh不需要有"执行权限&q

linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释

•/etc/passwd文件用于存放用户账户信息,每行代表一个账户,每个账户的各项信息用冒号分割,例如: root:x:0:0:root:/root:/bin/bash username:password:uid:gid:allname:homedir:shell 1.用户名. 2.密码,“x”代表密码存储在/etc/shadow中:当该值为其他任意非“x”值时,可以通过root用户切换(不需要密码),但是都无法通过非root用户切换到相应用户,因为无法获得起密码了. 3.uid,用户id,0-

linux里终端安转视频播放器的操作及显示

[[email protected] ~]$ mplayerbash: mplayer: command not found[[email protected] ~]$ yum list | grep mplayer^C^C Exiting on Broken Pipe [[email protected] ~]$ [[email protected] ~]$ SUbash: SU: command not found[[email protected] ~]$ su密码:su: 密码不正确[[

Linux里startup.sh 和 shutdown.sh

最近用socket编写了一个服务端程序,监听1024端口,检测客户端发来的请求,所在Linux里写启动和停止的脚本: 在Eclipse里java写好程序,右击导出生成 Runnable JAR file 然后socketServer.jar上传到服务器即可. 1.启动 startup.sh # ---------------------------------------------------- # Start script for the Socekt Server # ----------

Linux里如何设置IP(RED HAT)

一共包括以下两步 1:通过setup命令设置IP 保存…… --返回前面,配DNS 保存退出…… 2:重启网络服务 Linux里如何设置IP(RED HAT)

linux里引号注意点

python 中会把所有不带引号的(双引号或单引号)字符串都视作变量,会去尝试解释它,如果没有值则报错所以,想要引入一个字符串就必须加引起号 shell中关于引号 shell中系统会把单绰号中的字符都视作字符本身,没有任务他意.而在双引号里部分特殊字符照常会被解释,如("$",反引号"`")等 grep,sed,awk中关于引号它们中单引号里的字符都不是会被系统shell所解释,但会被grep,sed,awk内部解释器解释.例如:grep -E '^a|b' fil

linux里忘记root密码解决办法

1:打开虚拟机,点‘启动’按钮, 2:出现上面这个界面时,键盘输入’i’,出现grub界面: 3:键盘输入e,出现如下界面: 4:选择第二行(kernel……) 5:键盘输入e,出现如下界面: 6:在rhgb quiet后加上空格和数字1或者空格和single后回车. 这里以加空格和数字1为例: 然后,系统自动回到了上一层编辑界面,然后直接按b键,以简单模式重启. 重启过程在此省略. 重启完毕后,就到了下面的界面了,就可以开始修改密码了. 直接输入passwd 回车即可修改密码,在默认情况下这里

[转]在Linux里设置环境变量的方法

在Linux里设置环境变量的方法(export PATH) 一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量.例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量: 1.直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好,可用命令export查看