【发布时间】:2020-09-16 12:58:27
【问题描述】:
这是一个hackerrank问题:
作为一个简短的总结,您需要对预定义的整数个数求和,然后计算平均值并以 3 位精度打印。
我想出了以下代码:
read number_of_ints;
sum=0
for number in $(seq 1 $number_of_ints); do
read number
sum=$(($sum+$number))
done
printf "%.3f\n" | bc -l <<< $sum/$number_of_ints
printf "%.3f\n" $(echo "$sum/$number_of_ints" | bc -l)
但是,printf "%.3f\n" | bc -l <<< $sum/$number_of_ints 公然忽略了我的格式字符串,只是以 20 位精度输出它。
同时printf "%.3f\n" $(echo "$sum/$number_of_ints" | bc -l) 正是我想要的。
我知道这 20 个精度数字的根源在于 bc -l 预加载了一个数学库,但 printf "%.3f" 不应该仍将其减少到三位数吗?
【问题讨论】: