使用excel和C ++将指数转换为CSV

我试图写一个CSV文件,我有一个值是6.49483e-005,它正确写入CSV,但它不能正确显示在Excel中。 它读取为6,48E + 00。

我是用C ++来做的,如果你愿意的话,你可以要求代码,我使用long double写入CSV的值,然后将其转换为string,然后写入。

s = "00043E61" digitstring = "00000000000001000011111001100001" sum = 6.4753228798508644e-005 n = 278113 

在CVS中是6.49483e-005

在excel中:

在这里输入图像说明

  stringstream ss; ss << hex << s; unsigned n; ss >> n; bitset<32> b(n); string digitstring = b.to_string(); if(digitstring[0] == '1') { negative = true; } long double sum = 0; int exp = 1; int v = 0; if(negative) { v = 1; } else { v = 0; } for(; v < digitstring.size(); v++) { int b = digitstring[v] - '0'; long double result = (long double)b/power(2,exp); sum+=result; exp = exp +1; } if(negative) { sum*=-1; } ostringstream os; os << sum; resultsSoil.push_back(os.str()); } 

正如@ThomasMatthews指出的,你的语言环境不使用. 作为数字分隔符。 因此,您需要按照Excel预期的方式来格式化您的数字。 另外,CSV文件中的逗号需要用双引号括起来。 格式化您的数字为"6,49483e-005"然后再输出到CSV,你应该没问题!