bash linux 中的 Ceil 只有浮点数

Ceil only floating point numbers in bash linux

在 linux bash 中,我只想获取给定数字的下一个整数,前提是它是浮点数。我试过

count=$((${count%.*} + 1));

但是对于上面的代码,它一直在给出下一个整数(即使数字不是浮点数)。

预期结果:

345.56 => 346
345.12 => 346
345 => 345

谁能帮我找到解决办法?

提前致谢。

你可以使用

NUMBER=365
perl -w -e "use POSIX; print ceil($NUMBER/1.0), qq{\n}"

用于分配给变量

MYVAR=$(perl -w -e "use POSIX; print ceil($NUMBER/1.0), qq{\n}")

在 awk 中。部分测试记录:

$ cat file    # dont worry about stuff after =>
345.56 => 346
345.12 => 346
345 => 345
345.0
0 
-345.56 => 346
-345.12 => 346
-345 => 345
-345.0

awk:

$ awk '{print  " => " int()+(!=int()&&>0)}' file
345.56 => 346
345.12 => 346
345 => 345
345.0 => 345
0 => 0
-345.56 => -345
-345.12 => -345
-345 => -345
-345.0 => -345

您必须测试是否存在一个点:

case $count in
    *.*) count=$(( ${count%.*} + 1 )) ;;
      *) : nothing to do
         ;;
esac

[[ $count == *.* ]] && count=$(( ${count%.*} + 1 ))