相关疑难解决方法(0)

如何在shell中舍入浮点数?

如何在命令行上正确舍入 IEEE 754 浮点数?

我想指定输出数字的精度 - 小数位数。

例如,四舍五入6.66到精度1应该给出6.7。更多见下表:

Value   Precision  Rounded
6.66    0          7
6.66    1          6.7
6.66    2          6.66
6.66    3          6.660
6.666   3          6.666
6.6666  3          6.667
Run Code Online (Sandbox Code Playgroud)

它应该可以在交互式 shell 中使用,但理想情况下足够健壮,可以在生产 shell 脚本中使用它。

command-line bash arithmetic floating-point

13
推荐指数
1
解决办法
7万
查看次数

将浮点数转换为下一个整数而不是最近的整数?

上下文是有 2 个变量被划分为浮点结果,如下所示:

printf "%0.5f\n" $(echo 305/15 | bc -l)
20.33333
Run Code Online (Sandbox Code Playgroud)

我怎样才能总是四舍五入到下一个整数,即21?这不是将大于 20.5 的值向上舍入到 21,即最接近的整数。我问是因为我想要一个值要么是整数,要么是下一个整数,如果它以任何方式高于。那我该如何评价呢?用if声明?如果我在那里放一个浮点数,shell 会抱怨它需要一个整数。我不完全了解如何利用信息的Q&A,如这一个为实现转换“向上”到下一个整数。我错过了什么?

shell floating-point

5
推荐指数
1
解决办法
1万
查看次数

如何在 /bin/sh 中使用多个 var 值收缩 test -eq 表达式

#!/bin/sh
if [ $num -eq 9 -o $num -eq 75 -o $num -eq 200 ]; then
    echo "do this"
elif [ $num -eq 40 -o $num -eq 53 -o $num -eq 63]; then
    echo "do something for this"
else
    echo "for other do this"
fi
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以缩小if语句中的表达式?也许像

[ $num -eq (9,75,200) ]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我在这个操作系统上没有 GNU 实用程序。

shell scripting shell-script

4
推荐指数
1
解决办法
308
查看次数