我是靠谱客的博主 迷人花生,最近开发中收集的这篇文章主要介绍linux bash bc awk 浮点 计算 比较,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 "%.2fn",x/y}'`
$ echo $n
0.70


或者

引用

$ n=`awk 'BEGIN {x=2.53;y=3.64;printf "%.2fn",x/y}'`
$ echo $n
0.70


又或者

引用

$ echo '2.53 3.64'|awk '{printf "%.2fn",$1/$2}'
0.70


2、比较浮点数
awk还可以用于比较浮点数

引用

$ echo 123.45 123.44 | awk '{if($1>$2) {printf"%f greater then %fn",$1,$2} else {printf"%f less then %fn",$1,$2}}'
123.450000 greater then 123.440000



三、其他方法
当然,还可以用支持浮点预算的语言,如perl或python等,放在Bash脚本中运行:

引用

$ perl -e 'if ($ARGV[0]>$ARGV[1]) { printf "%f greater then %fn",$ARGV[0],$ARGV[1];} else { printf "%f less then %fn",$ARGV[0],$ARGV[1];}' 123.45 123.44
123.450000 greater then 123.440000


但这时似乎已经没有用Bash的必要了


转载于:https://blog.51cto.com/liuxiaolan/1664285

最后

以上就是迷人花生为你收集整理的linux bash bc awk 浮点 计算 比较的全部内容,希望文章能够帮你解决linux bash bc awk 浮点 计算 比较所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部