linux shell中小数的运算
对于在Shell中进行小数数字的计算,其实方法有很多,但是常用的方法都有其弱点:
1、bc
bc应该是最常用的Linux中计算器了,简单方便,支持浮点。
root@localhost:~# echo 1+2 | bc3root@localhost:~# echo 5.2*2.1 |bc10.9root@localhost:~# echo 5/35/3root@localhost:~# echo 5/3 |bc1root@localhost:~# echo "scale=2;5/3" |bc1.66root@localhost:~# echo "scale=3;2/3" | bc.666
从上面可以看到开始一切顺利,但是在计算小于1的小数的时候,最前面的0是不显示的,如0.666显示为.666,这个有些郁闷,还是没有达到完美的解决方法。
2、expr
不支持浮点计算,即不支持小数,所以也常被用来判断变量内容或者结果是不是非0整数(expr 0的echo $?不是0)。这里就不详细赘述了
3、$(())
同 expr
4、let
不仅不支持浮点计算,而且还只能赋值,不能直接输出。
5、awk
这里,我使用的是awk计算:
root@localhost:~# echo | awk '{print 12/21}'
0.571429
看上去还可以,那么进一步,我需要带变量:
root@localhost:~# a=5root@localhost:~# b=11root@localhost:~# c=21root@localhost:~# echo | awk '{print $a/$b}'nanroot@localhost:~# echo | awk "{print $a/$b}"0.454545
看上去也还可以,只是注意当使用变量的时候awk后的单引号需要变为双引号。
那么如何控制 显示的小数位数呢?没有找到print控制小数位数的方法,那么是否可以利用printf呢?
echo | awk '{printf "%.2f\n",10/3}'
3.33
这样是可以的,在继续试验变量的计算
root@localhost:~# a=5root@localhost:~# b=11root@localhost:~# c=21echo | awk "{printf "%.3f\n",$a/$b}"awk: line 1: syntax error at or near %root@localhost:~# echo | awk '{printf "%.3f\n",$a/$b}'nan一直报错,那么将变量打印出来root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",$a/$b}'1.000root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",$b/$a}'1.000root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",10/$a}'2.000root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",12/$a}'2.400root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",$a/3}'1.667可以看到打印出来后,可以使用一个变量,如何使用多个变量呢root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",$a/$b}'1.000root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",$1/$2}'0.455root@localhost:~# echo "$a $b $c" | awk '{printf "%.3f\n",$2/$3}'0.524
这样就可以了,可以使用$1,2,3,…来代替数字。也算是一种方法吧。
linux shell中小数的运算相关推荐
- linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算
在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...
- linux中bc用法英文,使用GNU bc在Linux Shell中进行数学运算
在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...
- linux——shell 中的运算
运算方式及运算符号 运算符号 意义 +,- 加法,减法 *,/,% 乘法,除法,取余 ** 幂运算 ++,- - 自增加,自减少 <,<=,>,>= 比较符号 =,+=,-=, ...
- shell中的算数运算
shell中的算数运算 首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算(Linux Bash Sh ...
- linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...
- linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法
一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...
- linux的shell的功能,linux shell中${ }的一些特异功能
linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...
- Linux shell 中的数组和关联数组
写在前面的话 我用开始废柴了,这个又是写给我自己看的了. 普通数组 1.数组的定义 在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯).定义数组的一 ...
- Linux Shell中的延时函数
Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下 sleep 和 usleep 的区 ...
最新文章
- seo网站营销与内容营销不可分割
- python电脑下载网址-Python
- 浙江文成“红领巾”向交警敬礼:上下学感谢有你
- 金融模型python_盘点金融领域里常用的深度学习模型
- Agile.Net 组件式开发平台 - 平台系统介绍
- 通用目标检测(集合)
- 静态成员变量.xml
- python搭建微信小程序-Python flask构建微信小程序订餐系统
- amd核芯显卡控制面板自定义分辨率_显卡是哪个
- 【php基础入门】细说php的变量以及常量的知识点详解
- 旷世英才遭天妒——拉马努金
- 信用风险频发背后:11月约600亿信用债发行取消
- 准备Scrum之旅 之 Hello,温哥华——《轻松Scrum之旅》(16)
- 【软件监控神器】Procmon
- Project中最常用的注意点
- android app检测更新版本,《Android APP应该有的东西》之功能篇:版本检测更新
- java.lang.NoClassDefFoundError: javax/transaction/Synchronization 解决方法。
- 2022年软件评测师真题
- 深度学习入门笔记(二):神经网络基础
- python创意编程培训 体会_省人工智能和创意编程教学研讨会学习心得
热门文章
- python刷题一亩三分地_手把手教你用python抓网页数据【一亩三分地论坛数据科学版】...
- HTTPS 也不安全?被发现新漏洞会暴露你的数据
- Java排序算法——希尔排序
- iOS下bound,center和frame
- 网站错误记录:A transport-level error has occurred when sending the request to the server.
- 手机吸费软件肆意捞金,通过代码签名证书加以防范
- 雷军做程序员时写的博客,太牛了!
- 又现“别人家的公司”!网曝腾讯和快手发“阳光普照奖”,给每个员工100股股票!...
- 作为程序员的你第一套房子是多少岁?多少万?
- 阿里资深Leader:组建技术团队的一些思考