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
我在对数组中的双精度值进行舍入时遇到问题。
刚开始学习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