AWK--Round函数

   下午朋友对我说“awk中怎么计算某列的值为四舍五入”;我们知道awk中是没有round函数;那样怎么样达到四舍五入的效果呢?我当时就想就写一个自定义函数吧!正好练习下最近学习的awk语言!

 

function round(a){
 b=int(a);
 c=a*10;
 d=b*10+5;
 if (c>=d)
 {
  e=b+1;
 }
 else{
 e=b; 
 }
 return e;
}

 

   测验这个函数;round.awk

 

function round(a){
 b=int(a);
 c=a*10;
 d=b*10+5;
 e=(c>=d)?(b+1):b;
 return e;
}
{
 print round(3.25),round(3.5),round(4.6),round(5.1);
}

 

预期结果应该是3,4,5,5

运行的代码是 echo aebcd | awk -f round.awk

测试结果是  3,4,5,5

  后来查看资料还可以这样实现;利用printf函数
  例如:echo adf | awk '{printf("%0.f\n",3.25)}'  结果也是3;也可以达到效果!


 

 



posted @ 2013-06-10 23:50  lottu  阅读(2670)  评论(0编辑  收藏  举报