java - 数组舍入

标签 java arrays rounding

massTotal 打印输出为以“.0”结尾的数字,无论小数点应该是多少。 massCounter[] 索引是 double 。如何将其四舍五入到小数点后第一位,而不是整数?

public static double massTotal(double[] massCounter) {
    double massTotal = 0.0;
    for (int i = 0; i < massCounter.length; i++) {
        massTotal += Math.round(massCounter[i] * 10.0 / 10.0);
    }
    return massTotal;
}

谢谢!

最佳答案

您的 Math.round 函数基本上是四舍五入所有内容,即

1.5 -> 2

22.4 -> 22

因此,当它们在方法中总计时,它始终是 x.0,这只是将整数打印为 double,显示第一个.0

你可以做的是完全删除Math.round,然后使用String.format打印结果,它将显示带有一位小数的输出地点。

String.format("%.1f", massTotal(myArray))

如果允许您使用 Java8 功能,甚至会更容易:

double total = DoubleStream.of(myArray).sum();
System.out.println(String.format("%.1f", total));

Online example

关于java - 数组舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47428345/

相关文章:

c# - 使用 C# 从数组中的单词中删除字符串中的单词

javascript - 使用reduce方法处理数组元素

java - 舍入错误给了我无效的答案

r - 在 R 中如何舍入为 1、1.5、2 等而不是 1、2 或 1.1、1.2、1.3?

java - 哈希符号显示在java文件中

java - 如何通过 Selenium-Java 连接到 putty 来执行命令集并验证 putty 窗口中的输出

c++ - 如何声明一个指向 int 数组的指针数组?

java - 即使存在主类,Java也无法找到主类

java - 在另一个类中读取数组列表对象及其字段(java)

python - Pandas 回合不适用于 DataFrame