public class Main {
public static void main(String[] args) {
generateRandomNumber();
}
public static void generateRandomNumber(){
double[] insideArray = new double[5];
for(int i=0; i<insideArray.length; i++) {
double value = (Math.random()+1)*10;
insideArray[i] = value;
String.format("%.2f", insideArray[i]);
}
System.out.println("Displaying random generated Array: " + Arrays.toString(insideArray));
}
}我尝试生成5个随机数并存储到一个数组中。我想要格式化小数到2个数字。我尝试了"String.format()“方法,但不起作用。尽管如此,我还是得到了两个: 10.xxxxxxxxxxx。
如何格式化它,如ex: 10.xx?
发布于 2020-07-06 16:29:27
String.format(String, double);返回格式化的字符串。它不会更改您想要格式化的对象。
换句话说:在调用String.format之后,insideArray[i]仍然是一个未四舍五入的双精度数。
解决问题的最简单方法是将String.format的结果存储在数组中。但是结果是一个String,而数组是一个double数组。这些类型不匹配。
您可以声明第二个数组来存储字符串,或者简单地更改insideArray的类型,因为您似乎不需要对它的元素做任何进一步的处理。
解决方案A:
double[] insideArray = new double[5];
String[] myStringArray = new String[5];
for(int i=0; i<insideArray.length; i++) {
double value = (Math.random()+1)*10;
insideArray[i] = value;
myStringArray[i] = String.format("%.2f", insideArray[i]);
}
System.out.println("Displaying random generated Array: " + Arrays.toString(myStringArray));解决方案B:
String[] insideArray = new String[5];
for(int i=0; i<insideArray.length; i++) {
double value = (Math.random()+1)*10;
insideArray[i] =String.format("%.2f", value);
}
System.out.println("Displaying random generated Array: " + Arrays.toString(insideArray));发布于 2020-07-06 17:35:48
打印双精度变量时,不能总是将其限制为2位十进制数字。要么使用BigDecimal,要么以字符串的形式存储。
public static void generateRandomNumber(){
String [] insideArray = new String[5]; // double array to string array
for(int i=0; i<insideArray.length; i++) {
double value = (Math.random()+1)*10;
insideArray[i] = String.format("%.2f", value); // store the converted number in the form of string.
}
System.out.println("Displaying random generated Array: " + Arrays.toString(insideArray));
}https://stackoverflow.com/questions/62751776
复制相似问题