我尝试了很多sed / awk / tail / cut / expr命令/函数,但我无法得到它。
我需要将我在变量中的任何数字舍入到下一个/最接近的第10个等价物。
关于我需要回合的例子(S):
Source no > Rounded to
1.74 > 1.80
11.74 > 11.80
222.74 > 222.80
5.35 > 5.40
44.11 > 44.20
4.93 > 5.00
4.89 > 4.90
4.80 > 4.90
所以我需要到达下一个0.10号码!
我需要的是将我的数字四舍五入到下一个(1/10 = 0.10),因此5.98将是6.00
所需的输出格式应为* .XX,输入数字也为* .XX
答案 0 :(得分:0)
请注意bash only supports integers。
在您的情况下,如果您只有2位数的精度,则需要添加0.09
。
您可以使用bc
执行浮点运算,也可以使用2个int来模拟FP编号:
# Pseudocode
# 11.74 (assuming we only have 2 digits precision)
A_INT=11
A_DEC=74
A_DEC_ROUND=$A_DEC+9
if A_DEC_ROUND > 100; then
A_INT=$A_INT+1
A_DEC_ROUND=$A_DEC_ROUND-100
fi
A_DEC_ROUND=$A_DEC_ROUND/10
A_DEC=$A_DEC_ROUND*10
答案 1 :(得分:0)
我编写了我需要的东西,它的工作非常完美...
number=$1
INT=`echo $number|cut -f1 -d"."`
DEC=`echo $number|cut -f2 -d"."|cut -c0-1`
if [ $DEC -ne 9 ]
then
DEC=`echo $DEC+1|bc`
DEC=`echo $DEC'0'`
INT=$INT
else
DEC=00
INT=`echo $INT+1|bc`
fi
echo $INT.$DEC