shell小数运算

在shell中做小数运算,可以借助bc 或者awk工具

一、使用bc做小数运算,scale指定小数点位数

1、加法运算(scale参数无效)

#echo "5.999 + 5.001"|bc
6.000
#echo "5.111+ 5.1114"|bc
10.2224

运算结果小数点位数以加数中最大的为准

2、减法运算(scale参数无效)

  同加法运算
  运算结果小数点位数以减数中最大的为准

3、乘法运算

#echo "5.12 * 5.6000"|bc
28.6720

乘积小数点位数默认以乘数中小数点位数最多的为准(不指定scale参数)
使用scale指定乘积的小数点位数时:
实际的乘积小数点位数为 m
乘数中小数点位数最多为 n

  • 当scale<n时,scale不起作用,乘积的小数点位数为n
  • 当scale>=m,乘积的小数点位数为m,末尾不会补零
  • 当n<scale<m时,乘积的小数点位数为scale值

4、除法运算

#echo "scale=2;5 / 2"|bc
2.50

除法中如果不指定scale参数,则结果没有小数位,小数位数完全按scale值来显示,计算结果的小数位数不足scale的值,则末尾补0

二、awk做小数运算

1、建议在awk中引用shell变量,使用格式:" ‘$var’ "或者’ “$var” '
2、awk使用print函数进行运算

#a=5;b=3;awk 'BEGIN{print "'$a'" / "'$b'"}'
1.66667

3、awk使用printf函数控制运算结果的小数点位数

#a=5;b=3
#echo "$a $b" |awk '{printf("%.2f",$1/$2)}' #首先使用echo输出变量,然后通过$1,$2,...引用变量值
1.67											  
#a=5;b=3
#awk 'GEGIN{printf("%.2f",'$a' / '$b')}'  #直接引用变量,用单引号将变量引起来

这两种方法,bc不能四舍五入(或许可以,但我不知道),awk则可以做到四舍五入

参考资料:
[AWK调用Shell变量的方法 http://developer.51cto.com/art/200509/3781.htm]

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目概述 本项目是基于Python语言和PyQt5的非官方性质、简易的中国铁路列车运行图系统。代码的发布遵循GPLv3协议。 与ETRC的联系 pyETRC项目的最初灵感来源和很多功能设置都来自由LGuo等前辈基于java语言开发的ETRC列车运行图系统。为致敬开发ETRC项目的前辈,本项目定名为pyETRC列车运行图系统,简称为pyETRC。 交互支持 本系统支持读取和导出ETRC列车运行图系统的运行图文件(*.trc)。但由于两软件支持的功能有差异,读取和导出过程可能造成一定的信息损失。 本系统与ETRC列车运行图系统的实现各有侧重。相比本系统,ETRC列车运行图系统有如下的特色比较突出: 动态运行图。本系统不支持此功能。 对于精确到客运时刻的需求,自带较完善的线路数据库和车次时刻数据库。而本系统的线路和车次数据库依赖外部文件,且目前很不完整。 较完善的车次切片功能。 更简洁的操作和数据,或者说需要用户提供的数据更少。 相比ETRC列车运行图系统,本系统主要有如下的特色: 更准确、完整的数据支持,包括精确到秒的时刻和精确到三位小数的里程,允许上下行分设不同站点,标尺,天窗,交路等。 做了一定的效率优化,对较大运行图的执行效果相对更好。 提供了一些运行图快速微调工具和分析工具,例如调整某一站名(同时修改所有列车数据中引用的改站名),对比两运行图等。 在3.0.0版本以后,提供了路网级的数据库管理模块,可以在更高层面上管理,更方便地查看、导出区段运行图。 两系统各有长短。因此建议,如果有需求,可以两套系统结合使用。 环境与运行 使用源代码方式运行本项目,需要具有以下环境。 Python 3.7及以上的版本。本项目开发所用的版本是3.7.4. 注:本项目使用了大量的f-string语法,该语法在Python 3.6以后的版本才被支持。一些较新的代码中利用了Python 3.7中dict键值对顺序与添加顺序一致的特性。如果使用3.6.*版本,这部分代码可能出现一些问题。如果使用3.6以下版本,则会报错。 下列的Python第三方库,都可以用pip安装。 PyQt5。必须。推荐使用5.10.1版本。 xlwt。可选。在涉及输出.xls的操作中需要用到。 xlrd。可选。在涉及读取.xls的操作中需要用到。 xpinyin。可选。在本系统2.3.0版本之前的线路数据库排序中用到。 NetworkX。可选。在3.0.0版本引入的路网数据管理中,用于以图论算法计算经由给出的路径。 作者开发的另一支持库Timetable_new。该库需要使用github上的源代码安装 第三方库安装 在安装第三方库之前,需要配置好python环境,并将安装目录添加到PATH环境变量中,安装好pip库。相关教程可借助搜索引擎找到。 在shell中依次执行以下命令,无报错即可。 pip install PyQt5==5.10.1 pip install xlwt pip install xlrd pip install xpinyin pip install networkx Timetable_new的安装 依次执行: git clone https://github.com/CDK6182CHR/Timetable_new cd Timetable_new .\install.bat 如果不用git,也可以在(https://github.com/CDK6182CHR/Timetable_new) 中下载并解压源代码,双击执行install.bat。 注:install.bat文件适合windows操作系统。如果是其他操作系统,请自行更改相关代码。 install.bat的代码如下。 python setup.py build python setup.py sdist python setup.py install pause 运行 运行main.py文件即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值