Bash:如何将变量四舍五入到下一个偶数?

cjm*_*671 3 bash shell

假设我从一个$11025的参数中得到了一个整数变量。

我需要它是 1024。我怎样才能把它四舍五入?

anu*_*ava 5

你可以做:

round() {
    echo $(( ${1:?need one argument} / 2 * 2))
}

round 1025
1024

round 1024
1024
Run Code Online (Sandbox Code Playgroud)

  • 或者,更简洁:`round_even() { echo $(( ${1:?need one argument} / 2 * 2)); 如果您对函数使用多行,则不需要分号,这不是注释中的选项。我假设参数检测代码在算术表达式中工作;如果没有,请使用您的代码中的赋值。 (2认同)

Rik*_*son 5

您可以使用以下语法编写算术表达式

$(( expr ))
Run Code Online (Sandbox Code Playgroud)

所以你想要这样的东西:

$(( $1 - ($1 % 2) ))
Run Code Online (Sandbox Code Playgroud)