在csv文件中将double转换为char

时间:2015-02-11 21:13:04

标签: java string csv

我将String编号转换为char字符/ csv文件时遇到问题:

  1. 使用Filwriter读取csv文件:
  2. FileWriter writer = new FileWriter(" features.csv");

    1. 我的csv文件的标题是:

      writer.append("EnergieMagnXYZ");
      writer.append(',');
      writer.append("label");
      writer.append('\n');
      
    2. 按以下方式追加数据行:

      writer.append(Double.toString(energie));
      writer.append(',');
      writer.append(label);
      
    3. 通过以下方式创建标签值:

      String label =" &#34 ;;

      if(tt[i] > 600){
          label = "1";
      }else if(tt[i] < 600){
          label = "0";    
      }   
      
    4. 我的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)。此外,我的双重值中的点对于进一步使用非常重要。

      我需要更改以获得这样的输出?

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稍微播放一下,直到您获得所需的输出。