对于在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中小数的运算相关推荐

  1. linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算

    在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

  2. linux中bc用法英文,使用GNU bc在Linux Shell中进行数学运算

    在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

  3. linux——shell 中的运算

    运算方式及运算符号 运算符号 意义 +,- 加法,减法 *,/,% 乘法,除法,取余 ** 幂运算 ++,- - 自增加,自减少 <,<=,>,>= 比较符号 =,+=,-=, ...

  4. shell中的算数运算

    shell中的算数运算 首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算(Linux Bash Sh ...

  5. linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式

    在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...

  6. linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法

    一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...

  7. linux的shell的功能,linux shell中${ }的一些特异功能

    linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...

  8. Linux shell 中的数组和关联数组

    写在前面的话 我用开始废柴了,这个又是写给我自己看的了. 普通数组 1.数组的定义 在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯).定义数组的一 ...

  9. Linux Shell中的延时函数

    Linux Shell中的延时函数 在 linux shell 脚本中经常需要做一些延时处理. 所以经常要用到 sleep 或 usleep 函数. 下面来说一下  sleep 和 usleep 的区 ...

最新文章

  1. seo网站营销与内容营销不可分割
  2. python电脑下载网址-Python
  3. 浙江文成“红领巾”向交警敬礼:上下学感谢有你
  4. 金融模型python_盘点金融领域里常用的深度学习模型
  5. Agile.Net 组件式开发平台 - 平台系统介绍
  6. 通用目标检测(集合)
  7. 静态成员变量.xml
  8. python搭建微信小程序-Python flask构建微信小程序订餐系统
  9. amd核芯显卡控制面板自定义分辨率_显卡是哪个
  10. 【php基础入门】细说php的变量以及常量的知识点详解
  11. 旷世英才遭天妒——拉马努金
  12. 信用风险频发背后:11月约600亿信用债发行取消
  13. 准备Scrum之旅 之 Hello,温哥华——《轻松Scrum之旅》(16)
  14. 【软件监控神器】Procmon
  15. Project中最常用的注意点
  16. android app检测更新版本,《Android APP应该有的东西》之功能篇:版本检测更新
  17. java.lang.NoClassDefFoundError: javax/transaction/Synchronization 解决方法。
  18. 2022年软件评测师真题
  19. 深度学习入门笔记(二):神经网络基础
  20. python创意编程培训 体会_省人工智能和创意编程教学研讨会学习心得

热门文章

  1. python刷题一亩三分地_手把手教你用python抓网页数据【一亩三分地论坛数据科学版】...
  2. HTTPS 也不安全?被发现新漏洞会暴露你的数据
  3. Java排序算法——希尔排序
  4. iOS下bound,center和frame
  5. 网站错误记录:A transport-level error has occurred when sending the request to the server.
  6. 手机吸费软件肆意捞金,通过代码签名证书加以防范
  7. 雷军做程序员时写的博客,太牛了!
  8. 又现“别人家的公司”!网曝腾讯和快手发“阳光普照奖”,给每个员工100股股票!...
  9. 作为程序员的你第一套房子是多少岁?多少万?
  10. 阿里资深Leader:组建技术团队的一些思考