【问题标题】:rounding off in bash [duplicate]在bash中四舍五入[重复]
【发布时间】:2018-12-24 21:30:31
【问题描述】:

我正在服用 a challenge on hackerrank目标是:

读取 (int) N;然后读取 N 个整数并打印它们的avg三个小数位。 p>

代码如下:

#!/bin/bash
#file name:rdlp.sh
read N
s=0
i=1
while (($i<=$N))
     do
           read a
           s=$((s+a))
           i=$((i+1))
     done
s=$s/$N
echo  "scale=3;$s"|bc -l
fi

当我为某些输入运行代码时:

3 #(N的值)
4 #(N = 3 个整数)
4
3

那么输出是3.666,但应该是3.667

所以 QUESTION 是无论如何都可以得到它正确正确的四舍五入),或者只有这样吗?

(当上面的代码为Testcase2 of the challenge at hackerrank运行时,问题就出来了)

【问题讨论】:

    标签: bash shell rounding


    【解决方案1】:

    bc 向下舍入为 scale=x
    你可以打印:

    $ printf "%.3f\n" $(echo  "scale=1000; 11/3"|bc -l)
    3.667
    

    或添加 0.0005 的一些棘手的 bc:

    $ echo  "scale=1000; v=11/3; v=v+0.0005; scale=3; v/1" | bc -l
    3.667
    

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多