小程序商家入驻平台:Bash天花板函数四舍五入为非常小的数字

我试图在 bash 中创建一个天花板函数,它将需要一个数字并向上舍入作为天花板函数。

例如:如果 shard_div 是 3.2 rounded_up 将是 4。

rounded_up=`ec $shard_div | awk '{printf("%d\n",$0+=$0<0?0:0.9)}'`

发生问题的地方是一些 shard_div 变量是数字,如 0.5 ^-10 或 0.00001。当这种情况发生时,rounded_up 为 0。

我宁愿不使用 if 语句,并且运行的机器没有 Perl。

1

使用bc。它有点健壮,但可以工作。

rounded_up=$(ec "scale=0; v=$shard_div; v=6; if (v%1 != 0) v = (v + 1); v / 1" | bc)

需要/ 1,否则 bc 不缩放。需要处理v%1 == 0情况,否则整数也会放大(如v=5; 5+1-& gt;6)

1

在 AWK:

$ awk '{print int($1) + ( $1!=int($1) && $1>=0 )}'

一些测试:

$ ec 0 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
0
$ ec 0.1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
1
$ ec 1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
1
$ ec -1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
-1
$ ec -1.1 | awk '{print int($1)+($1!=int($1)&&$1>=0)}'
-1

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(864)
无线mesh网络:RadioHead Mesh网络通信
上一篇
华为代码大全对照表:在乳胶中创建完全对齐的表(翻页)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(1条)