我有一个2d数组,它是通过解析文件中的数据而创建的。该方法将每个数据部分发送到字符串。我试图将数组从字符串转换为浮点数。除了一列外,所有东西都打印好。
例如:
2015/10/21,113.7600,42276880.0000,114.0000,115.5800,113.7000
2015/10/20,113.7700,48929200.0000,111.3400,114.1700,110.8200
2015/10/19,111.7300,29723750.0000,110.8000,111.7500,110.1100
转换为:
0.0 113.76 4.227688E7 114.0 115.58 113.7
0.0 113.77 4.89292E7 111.34 114.17 110.82
0.0 111.73 2.972375E7 110.8 111.75 110.11
日期列意味着返回0.0,但第3列返回一个奇怪的响应。这是我的代码或数据的错误吗?
将字符串数组转换为浮点数组方法
public void createDataArray(String [] [] n){
for(int x=0;x<n.length;x++) {
for(int y=0;y<n [x].length;y++) {
switch(y) {
case 0:
dataArray[x] [y] = 0;
break;
case 1:
dataArray[x] [y] = new Float(n[x] [y]);
break;
case 2:
dataArray[x] [y] = new Float(n[x] [y]);
break;
case 3:
dataArray[x] [y] = new Float(n[x] [y]);
break;
case 4:
dataArray[x] [y] = new Float(n[x] [y]);
break;
case 5:
dataArray[x] [y] = new Float(n[x] [y]);
break;
case 6:
dataArray[x] [y] = new Float(n[x] [y]);
break;
}
}
}
}
新阵列打印方法
public void printArray() {
for(int x=0;x<dataArray.length;x++) {
for(int y=0;y<dataArray[x].length;y++) {
System.out.printf("%s ", dataArray[x] [y]);
}
System.out.println();
}
}
如果您想了解更多信息,请询问。我相当确定它的数据有问题,但即使在给出假值后它仍会返回类似的响应。
答案 0 :(得分:1)
这是科学记数法,尝试使用%f代替浮点数而不是%s(字符串)。您可以根据需要获得更多控制权:https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
答案 1 :(得分:1)
根据您的要求,您必须使用%f
来打印float / double。
示例:
String[] floatNumbers = {"42276880.0000", "48929200.0000","29723750.0000"};
for (String s: floatNumbers ) {
Float temp = new Float(s);
System.out.printf("%f\t", temp);
System.out.println(temp);
}
输出:
42276880.000000 4.227688E7
48929200.000000 4.89292E7
29723750.000000 2.972375E7