我试图写一个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:
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());
}
答案 0 :(得分:1)
正如@ThomasMatthews指出的那样,您的语言环境不会将.
用作数字分隔符。因此,您需要按照Excel期望的方式格式化数字。另外,CSV文件中的逗号需要用双引号括起来。在将数字输出为CSV之前将其格式设置为"6,49483e-005"
,您应该没问题!