bash - 在 Bash 中将数字四舍五入到 10

标签 bash numbers rounding

我做了一个简单的函数,结果是例如64.998472747。有没有办法将其四舍五入到 60?如果是 65.998472747 则四舍五入为 70?这在 Bash 中可能吗?

light=62.998472747
printf "$.0f" "$light"

所以我的函数只四舍五入到一个整数。在这种情况下,它将四舍五入到 63。

谢谢!

最佳答案

您可以像这样使用 awk:

awk -v n='64.998472747' 'BEGIN{print int((n+5)/10) * 10}'
60

awk -v n='67.998472747' 'BEGIN{print int((n+5)/10) * 10}'
70

awk -v n='95.0' 'BEGIN{print int((n+5)/10) * 10}'
100

awk -v n='94.99' 'BEGIN{ print int((n+5)/10) * 10}'
90

为了使其通用,您可以将除数作为参数传递并创建一个实用程序函数:
round() { awk -v n=$1 -v d=$2 'BEGIN{print int((n+d/2)/d) * d}'; }

然后将其称为:
round 95.0000000001 10
100

round 94.9999 10
90

round 94.9999 1
95

round 95.5000000001 1
96

关于bash - 在 Bash 中将数字四舍五入到 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45240943/

相关文章:

linux - 有没有办法检测某人在 bash 中使用的终端程序

perl - 如何使用 Perl 脚本将二进制数转换为字符串字符?

perl - 需要解释 `~0` 与 `2**64` 有和没有 `use integer`

PHP相当于Excel的MROUND函数,四舍五入到最接近的倍数

R中舍入单位的舍入数

linux - 在 unix 中查找两个文件之间差异的最快方法?

linux - 如何立即将标准错误传递给参数

python - 如何将数字四舍五入到指定的上限或下限?

linux - 这个 Bash 函数有语法错误吗?当硬编码到主循环中时,功能可以正常工作

java - 如何查找一个数字是否具有这种格式的表示形式?