首页 > 解决方案 > Java:如何将数组中的所有元素四舍五入到小数点后两位?

问题描述

我在从数组中舍入双精度值时遇到问题。

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

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

如果它不是一个数组,我会用System.out.println("%.2f, val). 但是,使用数组,我不知道该怎么做。感谢帮助。

这是我的整个计算课。每个计算都是正确的,唯一的问题是四舍五入和打印。

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));
    }
}

标签: javaarraysdoubledecimal-point

解决方案


您不能只循环 (i) 次并执行 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);
}

如果你喜欢新的StreamAPI,你也可以这样做(你必须使用double一些复杂的类型系统原因,我不应该在这里讨论)。

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

推荐阅读