shell的数值计算,小数计算

shell脚本中,可以进行数值计算,

如加减乘除,通过expr、let、(())等完成,文章介绍:http://blog.csdn.net/longshenlmj/article/details/14166193
但是上面的运算只支持整数。
小数计算怎么办?

shell中小数计算

通过bc,awk和nawk工具等完成

使用bc的代码如:

click=`awk -F"\t" ‘$1==2 {print $2}‘ ctr_result.txt`
show=`awk -F"\t" ‘$1==1 {print $2}‘ ctr_result.txt`
ctr=`echo "scale=4;$click/$show"| bc`
其中,echo "scale=4;$click/$show"| bc完成小数计算,
scale参数指定小数点后的保留位数,这里保留4位。
ctr_result.txt内容为
        1 12
        2 10
通过awk获取两个参数
当然,也可以直接用awk完成小数计算:
    。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-03 14:45:01

shell的数值计算,小数计算的相关文章

Linux shell脚本数值计算个人心得

Linux shell脚本数值计算个人心得 本篇博客为,个人对与bash数值计算的一些心得与用法. Bash对于数值是没有明确定义的,在shell里面所有的数值都默认为字符串,并不是单纯的数值. 比如:a=1+2,a并不等于3,而是等于字符串1+2. 整数计算: 整数计算为整数型的数值加减乘除,没有浮点数的数值,就算浮点数的数值进行加减也会忽略小数点后面的数值. 表达式计算方法: 表达式1:$[EXPRESSION] 表达式2:$((EXPRESSION)) [ ] 和 (( )) 也被称为运算

计算机程序的思维逻辑 - 小数计算为什么会出错?

违反直觉的事实 计算机之所以叫"计算"机就是因为发明它主要是用来计算的,"计算"当然是它的特长,在大家的印象中,计算一定是非常准确的.但实际上,即使在一些非常基本的小数运算中,计算的结果也是不精确的. 比如: float f = 0.1f*0.1f; System.out.println(f); 这个结果看上去,不言而喻,应该是0.01,但实际上,屏幕输出却是0.010000001,后面多了个1. 看上去这么简单的运算,计算机怎么会出错了呢? 简要答案 实际上,不是

HTML页面添加HTML代码的拼接字符串;以及js里面的小数计算

(1)var tr = ""; tr = '<tr><td>银行转账</td><td>'+O_AMOUNT+'</td><td>'+P_DT+'</td><td></td><td></td><td></td><td>'+P_HL_ZH+'</td>           <td>'+P_U_ZH+'

java用double和float进行小数计算精度不准确

java用double和float进行小数计算精度不准确 大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中或者已知的小数计算得到的结果会不准确,这种问题是非常严重的. <Effective Java>中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,java的设计者给编程人员提供了一个很有用的类BigDecim

js 小数计算失去精度

原因:小数计算会转化为二进制 精度丢失 举个例子:4.02*10的N次方 怎么算都是错的; 常见问题 0.1+0.2 !=0.3 ... 处理:转化为小数进行计算 //加法 function addNum (a,b){  var c,d,e; try {       c = a.toString().split(".")[1].length; } catch (f) {       c = 0; }   try {       d = b.toString().split("

[笔记]shell编程:数学计算

在shell Script中,有好几种进行数学运算的方法,虽然有几个效果差不多,在编写程序的时候使用一种方法就够了,但是我们可能还需要学习别人的程序啊,在阅读别人的程序的时候不能不认识这些东西吧.所以,留个笔记. 一.expr 命令  --  expr 允许在命令行上处理数学表达式,但是略显拙劣. 例:$ expr 1 + 5    #注意在表达式中要有空格,如果写成1+5那么结果就不是我们想要的了. expr命令能够识别一些不同的数学和字符串操作符: 操作符 描述 arg1 | arg2 如果

shell脚本--数值计算

原生bash不支持简单的数学运算 初学的时候,可以使用$(())和expr来实现 使用$(())来实现: #!/bin/bash #文件名:test.sh echo $((1+3)) #命令行第2个参数和第3个参数求和 #此时+号两边可以不用加空格 echo $(($1+$2)) echo $(($1 + $2)) echo $(($1-$2)) echo $(($1*$2)) #此时不用对*转义 echo $(($1/$2)) echo $(($1%$2)) 执行脚本: [email prot

js 小数计算为啥和想象中不一样!

今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){...}.我可能等一下午都等不到大括号中的内容被执行. 为啥呢?因为在js中0.1+0.2=0.30000000000000004.说起来你可能不信,又或者去验证一下.结果为啥是这样?在我查找资料之后豁然开朗.对于浮点型数据,大多语言计算都会丢失精度.但是像c++/java这种厉害的语言都有自己封装的一套方法

【转】FPGA内部小数计算

FPGA内部计算小数 [转载] 谓定点小数,就是小数点的位置是固定的.我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了).既然没有储存小数点的位置,那么计算机当然就不知道小数点的位置,所以这个小数点的位置是我们写程序的人自己需要牢记的. 先以10进制为例.如果我们能够计算12+34=46的话,当然也就能够计算1.2+3.4 或者 0.12+0.34了.所以定点小数的加减法和整数的相同,并且和小数点的位置无关.乘法就不同了. 12