将字符串转换为浮点的数组会创建意外的返回。JAVA
我有一个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
date列将返回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();
}
}
如果你想了解更多的信息,尽管问。我相当肯定数据有问题,但即使给它假值,它仍然会返回类似的响应
# 1 楼答案
根据您的要求,您必须使用
%f
来打印float/double例如:
输出:
Docs
# 2 楼答案
这是科学的表示法,请尝试使用%f代替%s(字符串)作为浮点数。您可以根据需要获得更多控制:https://docs.oracle.com/javase/tutorial/java/data/numberformat.html