Java: 如何将数组中的所有元素四舍五入到小数点后两位数?

Java: How to round up all of the elements in an array to two digits after decimal point?

我在对数组中的双精度值进行舍入时遇到问题。

刚开始学习JAVA的时候,惊讶于数组的打印不一样。我的意思是,为了打印出充满浮点值的整个数组,您不能只循环 (i) 次并执行 System.out.println("%.2f", array[i]);.

打印方式是System.out.println(Arrays.toString(array));

如果它不是数组,我会用 System.out.println("%.2f, val) 将浮点数四舍五入。但是,对于数组,我不知道该怎么做。感谢帮助。

这里是我的全部class用于计算。每次计算都是正确的,唯一的问题是四舍五入和打印。

package sample;

import java.util.Arrays;

public class Calculations extends Data{

    public void calculateLinearCredit()
    {
        double[] linearCredit = new double[super.term];
        double[] linearInterest = new double [super.term];
        double[] linearPayment = new double [super.term];


        double firstMonthInterest = ((super.loan / super.term) * super.percentage) / 100;
        double Credit = super.loan / super.term;
        double interestDiff = firstMonthInterest/12;

        linearInterest[0] = firstMonthInterest;


        for(int i = 0; i < linearCredit.length; i++)
        {
            linearCredit[i] = Credit;
        }

        for(int i = 1; i < linearInterest.length; i++)
        {
            linearInterest[i] = linearInterest[i-1] - interestDiff;
        }


        for(int i = 0; i < linearPayment.length; i++)
        {
            linearPayment[i] = linearInterest[i] + linearCredit[i];
        }

        //-----------------------------------------------
        //System.out.println(Arrays.toString(linearPayment));
        //System.out.println(Arrays.toString(linearCredit));
        //System.out.println(Arrays.toString(linearInterest));
    }
}

you can't just loop (i) times and do System.out.println("%.2f", array[i])

当然可以。只要使用正确的方法。

float[] array = new float[]{1.2f, 2.3425f, 3.4525f};
for (int i = 0; i < array.length; i++) {
  System.out.printf("%.2f%n", array[i]);
}

你甚至可以这样做:

for (float value : array) {
  System.out.printf("%.2f%n", value);
}

如果你喜欢新的 Stream API 你也可以这样做(你必须使用 double 尽管由于一些复杂的类型系统原因我不应该进入这里) .

double[] dblArray = new double[]{1.2, 2.3425, 3.4525};
Arrays.stream(dblArray)
        .forEach(value -> System.out.printf("%.2f%n", value));

只需使用 Math.round()

double[] array = new double[]{12.5698, 123.12345,0.1, 41234.212431324};    
    for (int i=0;i<array.length;i++) {
     array[i] = Math.round(array[i] * 100.0) / 100.0;
    System.out.println(array[i]);
}

in order to print out the whole array full of float values, you can't just loop (i) times and do System.out.println("%.2f", array[i]);

你可以但是使用System.out.format()

for(int i=0;i<array.length;i++)
{
    System.out.format("%.2f ",array[i]);

}

Output: 12.57 123.12 0.10 41234.21