在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。

所以对于加法运算、减法运算、乘法运算,可以将其再通过除法运算,实现保留小数位。

比如,对于加法运算,echo "5.999 + 5.001"|bc 可以转换成echo "scale=2;(5.999 + 5.001)/1"|bc

对于减法运算,echo "5.999 - 5.001"|bc 可以转换成echo "scale=2;(5.999 - 5.001)/1"|bc

对于乘法运算,echo "5.999 * 5.001"|bc 可以转换成echo "scale=2;(5.999 * 5.001)/1"|bc

scale只会保留指定长度的小数,但是并不会进行四舍五入;实现四舍五入需要借助printf进行四舍五入。例如:printf  "%.2f" $(echo "5.999 + 5.001"|bc)。

二、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 'BEGIN{printf("%.2f",'$a' / '$b')}'  #直接引用变量,用单引号将变量引起来

这两种方法,awk则可以做到四舍五入,bc本身不能四舍五入,但是可以借助printf进行四舍五入。例如:printf  "%.2f" $(echo "5.999 + 5.001"|bc)

Linux-Shell 小数运算,四舍五入的更多相关文章

  1. Linux Shell 数学运算

    Linux Shell 数学运算 在Linux中直接使用数学运算符进行数学运算往往得不到我们想要的计算结果.要在Shell中进行数学运算,我们需要借助点小手段.目前,Linux Shell中进行数学运 ...

  2. Shell初学(六)Linux Shell 时间运算以及时间差计算方法

    Linux Shell 时间运算以及时间差计算方法 时间的加减,以及时间差的计算. 1. 时间加减 这里处理方法,是将基础的时间转变为时间戳,然后,需要增加或者改变时间,变成 秒. 如:1990-01 ...

  3. Linux shell 整数运算 let [ ] (( )) expr以及 浮点数 bc用法(转)

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算:2)Linux shell 中使用 expr 与 b ...

  4. Linux Shell 小数比较

    #!/bin/bash #######expr 方法是错误的,在比较相同位数时可以,当位数不同就会出错,如100.00>70.00就会得出错误的结果 a=123b=123c=99.99rat=` ...

  5. Linux shell 变量 数学 运算

    Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 ...

  6. 推荐掌握Linux shell中这7种运算命令

    #常见的算术运算符号 .+.-:加减 .*./.%:乘.除.取余 .**:幂运算 .++.--:增加记减少 .!.&&.||:取反,并且,或 .<,<=,>,=> ...

  7. Linux Shell编程基础

    在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐 ...

  8. linux shell脚本相关知识

    最近的项目中,有一个编写linux shell脚本的任务.由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多.下面是linux shell脚本中常用的知识总结. 1基础语法 ...

  9. Linux Shell脚本简单语法汇总(Deepin下运行)

    整理自: https://www.runoob.com/?s=shell Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 业界所说的 shell 通常都是指 sh ...

  10. 前端学习 linux —— shell 编程

    前端学习 linux - shell 编程 shell 原意是"外壳",与 kernel(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁.shell 有很多种,国内通常使用 ...

随机推荐

  1. java基础(12)--static变量/方法 与 无 static的变量/方法的区别

    一.static方法与非static方法的区别: 1.带有static方法调用:使用类名.方法名(),(建议,但也支持,"引用".变量的方式访问) 2.没有static方法调用(实 ...

  2. 基于html5+javascript技术开发的房贷利率计算器,买房的码农们戳进来

    房贷计算器是一款专为购房者设计的实用工具应用,其主要功能是帮助用户详细计算房贷的还款金额.利息以及还款计划等.通过这款软件,用户可以更加便捷地了解到自己的还款情况和计划,从而更好地规划自己的财务.下面 ...

  3. springboot启动流程 (3) 自动装配

    在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能. 本文将详细分析该注解的工作流程. EnableAutoConfiguration注解 启用Sprin ...

  4. [转帖]快速定位MySQL数据库当前消耗CPU最高的sql语句

    概述 One of our customers recently asked whether it is possible to identify, from the MySQL side, the ...

  5. 使用Grafana 监控 minio 的部分改进

    使用Grafana 监控 minio 的部分改进 部署minio开启监控metrics的脚本 mkdir -p /data/minio/data cat << EOF > /etc/ ...

  6. [转帖]create table INITRANS参数分析

    https://www.modb.pro/db/44701 1. 内容介绍 Oracle数据库create table时使用INITRANS参数设置数据块ITL事务槽的数量,确保该数据块上 并发事务数 ...

  7. [转帖]Rocksdb的优劣及应用场景分析

      研究Rocksdb已经有七个月的时间了,这期间阅读了它的大部分代码,对底层存储引擎进行了适配,同时也做了大量的测试.在正式研究之前由于对其在本地存储引擎这个江湖地位的膜拜,把它想象的很完美,深入摸 ...

  8. [转帖]配置ftp连接对象存储bucket子目录的方法

    https://developer.jdcloud.com/article/1838 配置ftp连接对象存储bucket子目录的方法  京东云技术交付部  2021-01-27 IP归属:未知 441 ...

  9. [转帖]SIMD+SSE+AVX

    http://home.ustc.edu.cn/~shaojiemike/posts/simd/   SIMD SIMD全称Single Instruction Multiple Data,单指令多数 ...

  10. [转帖] 在Linux上查看活跃线程数与连接数

    https://www.cnblogs.com/codelogs/p/17178675.html   原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介# 现 ...