我将String编号转换为char字符/ csv文件时遇到问题:
FileWriter writer = new FileWriter(" features.csv");
我的csv文件的标题是:
writer.append("EnergieMagnXYZ");
writer.append(',');
writer.append("label");
writer.append('\n');
按以下方式追加数据行:
writer.append(Double.toString(energie));
writer.append(',');
writer.append(label);
通过以下方式创建标签值:
String label =" &#34 ;;
if(tt[i] > 600){
label = "1";
}else if(tt[i] < 600){
label = "0";
}
我的Energie双阵列tt [i]的值是:
2139.0882022271244
2334.38651422678
2329.342679013897
2286.6136318937574
但是当我创建我的csv文件时,我的输出将是这样的:
EnergieMagnXYZ,标签
21.390.882.022.271.200,00
233.438.651.422.678,00
2.329.342.679.013.890,00
22.866.136.318.937.500,00
但是我想在我创建的csv文件中输出这样的输出(在标签为0的情况下):
EnergieMagnXYZ,标签
2139.0882022271244,0
2334.38651422678,0
2329.342679013897,0
2286.6136318937574,0
小心:
2139.0882022271244,0
不是单个数字,而是2139.0882022271244,0是分隔字段。所以我的行包含一个double值和一个数字格式的标签(0或1)。此外,我的双重值中的点对于进一步使用非常重要。
我需要更改以获得这样的输出?
答案 0 :(得分:0)
这就是你要找的东西:
NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(false); // remove the dots grouping each 3 digits
nf.setMaximumFractionDigits(0); // remove the fraction digits
String formatedEnergie = nf.format(Energie));
现在您打印formatedEnergie而不是Energie,如下所示。
NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(false); // remove the dots grouping each 3 digits
nf.setMaximumFractionDigits(13); // remove the fraction digits
String formatedEnergie = nf.format(Double.toString(energie)));
writer.append(formatedEnergie);
writer.append(',');
writer.append(label);
您将获得值
2286.6136318937574
如果这不是您想要的,请使用NumberFormat API稍微播放一下,直到您获得所需的输出。