我在接受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运行时,问题就解决了)
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(