当前位置: 首页 > 知识库问答 >
问题:

在bash中舍入[重复]

曹经业
2023-03-14

我在接受hackerrank的挑战。目的是:

读取(int)N;然后读取N个整数并将其平均值打印到小数点后三位。

这是代码:

#!/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。

所以问题是,到底是有什么方法可以使它正确(正确的四舍五入),还是它只能这样工作?

(当上述代码在hackerrank为挑战的Testcase2运行时,问题就解决了)

共有1个答案

慕宏峻
2023-03-14

bc向下舍入size=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
 类似资料:
  • 问题内容: 如何将两个除数的结果取整,例如 和我一样 $ testOne应当将其舍入为“ 2”作为3/2 = 1.5的答案时包含“ 1” 问题答案: 要进行舍入运算,只需将其加到分子上即可。 例子,四舍五入: 例子,四舍五入: 要四舍五入,将其加到分子(一半将四舍五入):

  • 除了重写当前进行字符串转换的方法外,还有什么好方法可以将其双精度/字符串表示形式四舍五入到小数点后3位?

  • 问题内容: 根据Wikipedia的说法,在四舍五入一个负数时,您对绝对数进行了四舍五入。因此,根据这种推理,-3.5将四舍五入为-4。但是当我使用java.lang.Math.round(-3.5)时返回-3。有人可以解释一下吗? 问题答案: 根据javadoc 返回最接近参数的long。通过将结果加1/2,将结果取底,并将结果强制转换为long类型,将结果舍入为整数。换句话说,结果等于表达式的

  • 我已经阅读了很多stackoverflow问题,但似乎没有一个对我有效。我正在使用<code>数学。round()进行舍入。这是代码: 我得到的输出是:< code>123,但我希望它是< code>123.14。我知道添加< code>*100/100会有所帮助,但是正如你所看到的,我并没有设法让它工作。 输入和输出都是双份绝对是必不可少的。 如果您更改上述代码的第4行并发布它,那将是很大的帮助

  • 我用Swift中的double做了一个计算器。问题是,当我显示结果时,它会显示出来。即使是整数,最后也为0。我已经尝试了round()函数,但由于它是一个双精度函数,所以它似乎总是显示出来。0 . 在Objective-c中,我通过键入: 在这种情况下,根本不会有小数,例如,如果有@"%.3f"。 有人知道如何用swft做到这一点吗?我在不同的论坛上找了找,但到处都找不到...谢谢!

  • 问题内容: 我想将1732的数字四舍五入到十,十万。我尝试了Math的舍入函数,但它仅针对float和double编写。如何针对Integer执行此操作?Java中有任何功能吗? 问题答案: 使用 精度 (Apache Commons Math 3.1.1) 使用 MathUtils (Apache Commons Math)-旧版本 标度 -小数点右边的位数。(+/-) 由于使用了 round(