如何将具有 0 的 2 个小数位添加到数组
How to add 2 decimal places having 0s to an array
我想为数组中的所有元素打印 2 的精度。
例如,如果我输入 11.00,我期望输出:
[11.00, 11.04, 11.09, 11.15, 11.19, 11.22]
但我得到:
[11.0, 11.04, 11.09, 11.15, 11.19, 11.22]
第一个元素缺少尾随零。
import java.io.*;
import java.util.*;
import java.text.DecimalFormat;
import static java.lang.Math.*;
public class Main{
public static void main (String[] args){
Scanner s = new Scanner(System.in);
DecimalFormat df = new DecimalFormat(".00");
df.setMaximumFractionDigits(2);
float a=s.nextFloat();
float arr[]= new float[6];
// arr[0]=Float.valueOf((df.format(a+0.001)));
arr[0]=a;
arr[1]=a+(float)(0.04);
arr[2]=a+(float)(0.09);
arr[3]=a+(float)(0.15);
arr[4]=a+(float)(0.19);
arr[5]=a+(float)(0.22);
System.out.println(Arrays.toString(arr));
}
}
您数组中的对象类型是 float
。你不能告诉它是一个带 N
个小数位的浮点数,它只是一个原始值。
通常您希望在需要使用原语时对其进行格式化,例如作为String
。
在这种情况下:
for( float f : arr )
{
System.out.println( df.format( f ) );
}
让我们从为什么它不起作用开始?来自 Arrays.toString
文档:
Elements are converted to strings as by String.valueOf(float).
String.valueOf(float)
的实现是:
public static String valueOf(float f) {
return Float.toString(f);
}
因此,您的代码片段中声明的 df
从未被使用。
你能做什么?正如@Koenigsberg 在他的回答中提到的,您可以遍历数组,然后在两侧添加方括号,并在元素之间添加逗号。
如果可以使用双精度而不是浮点数,则可以使用 java 流。代码示例将是:
System.out.println("[" + Arrays.stream(arr).mapToObj(df::format).collect(Collectors.joining(", ")) + "]");
如果你不能使用双打,你可以迭代 arr
:
的索引
System.out.println("[" + IntStream.range(0, arr.length).mapToObj(i -> df.format(arr[i])).collect(Collectors.joining( ", ")) + "]");
我想为数组中的所有元素打印 2 的精度。
例如,如果我输入 11.00,我期望输出:
[11.00, 11.04, 11.09, 11.15, 11.19, 11.22]
但我得到:
[11.0, 11.04, 11.09, 11.15, 11.19, 11.22]
第一个元素缺少尾随零。
import java.io.*;
import java.util.*;
import java.text.DecimalFormat;
import static java.lang.Math.*;
public class Main{
public static void main (String[] args){
Scanner s = new Scanner(System.in);
DecimalFormat df = new DecimalFormat(".00");
df.setMaximumFractionDigits(2);
float a=s.nextFloat();
float arr[]= new float[6];
// arr[0]=Float.valueOf((df.format(a+0.001)));
arr[0]=a;
arr[1]=a+(float)(0.04);
arr[2]=a+(float)(0.09);
arr[3]=a+(float)(0.15);
arr[4]=a+(float)(0.19);
arr[5]=a+(float)(0.22);
System.out.println(Arrays.toString(arr));
}
}
您数组中的对象类型是 float
。你不能告诉它是一个带 N
个小数位的浮点数,它只是一个原始值。
通常您希望在需要使用原语时对其进行格式化,例如作为String
。
在这种情况下:
for( float f : arr )
{
System.out.println( df.format( f ) );
}
让我们从为什么它不起作用开始?来自 Arrays.toString
文档:
Elements are converted to strings as by String.valueOf(float).
String.valueOf(float)
的实现是:
public static String valueOf(float f) {
return Float.toString(f);
}
因此,您的代码片段中声明的 df
从未被使用。
你能做什么?正如@Koenigsberg 在他的回答中提到的,您可以遍历数组,然后在两侧添加方括号,并在元素之间添加逗号。
如果可以使用双精度而不是浮点数,则可以使用 java 流。代码示例将是:
System.out.println("[" + Arrays.stream(arr).mapToObj(df::format).collect(Collectors.joining(", ")) + "]");
如果你不能使用双打,你可以迭代 arr
:
System.out.println("[" + IntStream.range(0, arr.length).mapToObj(i -> df.format(arr[i])).collect(Collectors.joining( ", ")) + "]");