linux bash bc awk 浮点 计算 比较
2014-02-12 19:39
381 查看
Bash中的变量没有数据类型的定义,这样,在处理字符串和数值时会带来麻烦。例如,使用-eq比较数值,==比较字符串等。另外,Bash中常用的let、expr仅支持整数运算,不支持浮点数计算。要实现浮点数计算,可以使用bc或awk。
一、bc
bc是一个常用的计算器,可以计算浮点数:
引用
$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=4
2.53/3.64
.6950
但bc不适合用于Bash脚本中。
二、awk
更好的方法,是借助awk强大的函数功能。
1、计算浮点数
引用
$ n=`awk -v x=2.53 -v y=3.64 'BEGIN {printf "%.2f\n",x/y}'`
$ echo $n
0.70
或者
引用
$ n=`awk 'BEGIN {x=2.53;y=3.64;printf "%.2f\n",x/y}'`
$ echo $n
0.70
又或者
引用
$ echo '2.53 3.64'|awk '{printf "%.2f\n",$1/$2}'
0.70
2、比较浮点数
awk还可以用于比较浮点数
引用
$ echo 123.45 123.44 | awk '{if($1>$2) {printf"%f greater then %f\n",$1,$2} else {printf"%f less then %f\n",$1,$2}}'
123.450000 greater then 123.440000
三、其他方法
当然,还可以用支持浮点预算的语言,如perl或python等,放在Bash脚本中运行:
引用
$ perl -e 'if ($ARGV[0]>$ARGV[1]) { printf "%f greater then %f\n",$ARGV[0],$ARGV[1];} else { printf "%f less then %f\n",$ARGV[0],$ARGV[1];}' 123.45 123.44
123.450000 greater then 123.440000
但这时似乎已经没有用Bash的必要了。
一、bc
bc是一个常用的计算器,可以计算浮点数:
引用
$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale=4
2.53/3.64
.6950
但bc不适合用于Bash脚本中。
二、awk
更好的方法,是借助awk强大的函数功能。
1、计算浮点数
引用
$ n=`awk -v x=2.53 -v y=3.64 'BEGIN {printf "%.2f\n",x/y}'`
$ echo $n
0.70
或者
引用
$ n=`awk 'BEGIN {x=2.53;y=3.64;printf "%.2f\n",x/y}'`
$ echo $n
0.70
又或者
引用
$ echo '2.53 3.64'|awk '{printf "%.2f\n",$1/$2}'
0.70
2、比较浮点数
awk还可以用于比较浮点数
引用
$ echo 123.45 123.44 | awk '{if($1>$2) {printf"%f greater then %f\n",$1,$2} else {printf"%f less then %f\n",$1,$2}}'
123.450000 greater then 123.440000
三、其他方法
当然,还可以用支持浮点预算的语言,如perl或python等,放在Bash脚本中运行:
引用
$ perl -e 'if ($ARGV[0]>$ARGV[1]) { printf "%f greater then %f\n",$ARGV[0],$ARGV[1];} else { printf "%f less then %f\n",$ARGV[0],$ARGV[1];}' 123.45 123.44
123.450000 greater then 123.440000
但这时似乎已经没有用Bash的必要了。
相关文章推荐
- linux bash bc awk 浮点 计算 比较
- linux bash bc awk 浮点 计算 比较
- bc awk 小数 浮点 计算 比较 Linux bash
- bash中的计算和比较(整数和小数)之二:bc的用法
- Linux_Bash脚本_bc浮点计算器、进制转换
- Linux bash和profile比较
- Linux下的计算器(bc、expr、dc、echo、awk)知多少?
- Linux命令之bc - 浮点计算器、进制转换
- linux的awk和sed等命令比较
- linux 浮点数计算
- Linux 文件比较(grep/comm/awk)
- Linux下的计算器(bc、expr、dc、echo、awk)知多少?
- Linux下删除数量比较多的文件报错:-bash: /bin/rm: Argument list too long
- Linux下的计算器bc、expr、dc、echo、awk
- LINUX sed grep awk之间比较整理
- [Linux][2011-11-23] bash if 比较 # 重定向
- linux shell bash 比较操作
- PHP之浮点数计算比较以及取整数不准确的解决办法
- Linux命令之bc - 浮点计算器、进制转换
- PHP中浮点数计算比较及取整不准确的解决方法