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

时间:2016-09-29 16:58:55

标签: c++ excel csv localization

我试图写一个CSV文件,我有一个6.49483e-005的值,这个值在CSV中正确写入,但它在excel中没有正确显示。它读作6,48E + 00。

我在C ++中这样做,如果你愿意,你可以要求代码,我使用long double作为写入CSV的值,然后将其转换为字符串,然后写入

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

在CVS中6.49483e-005

in excel:

enter image description here

            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());
         }

1 个答案:

答案 0 :(得分:1)

正如@ThomasMatthews指出的那样,您的语言环境不会将.用作数字分隔符。因此,您需要按照Excel期望的方式格式化数字。另外,CSV文件中的逗号需要用双引号括起来。在将数字输出为CSV之前将其格式设置为"6,49483e-005",您应该没问题!