1
CSVファイルを書き込もうとしていて、値が6.49483e-005でCSVで正しく書かれていますが、Excelでは正しく表示されません。 6,48E + 00と読みます。エクセルおよびC++を使用して指数をCSVに変換する
私はC++でこれをやっていますが、必要ならコードを尋ねることができます。私はCSVに書き込まれた値にlong doubleを使って文字列に変換して書きます。 CVSで
s = "00043E61"
digitstring = "00000000000001000011111001100001"
sum = 6.4753228798508644e-005
n = 278113
それはExcelで6.49483e-005
です:
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());
}
はい、常にコードしてください! :) ---しかし、CSVで正しく書かれていれば、おそらくセルの表示形式です。 ExcelではCtl + 1を押し、6桁の精度でFormat to Scientificを変更します。それがそれをするかどうかを確認してください。 – cxw
それでも6,494830E + 00と読み込まれます。 CSVでは6.49483e-005と表示されています。 –
OK - 私は誤解の可能性があります。さらに、入力した 'unsigned n'値、対応する' sum'と 'os.str()'の値、CSVファイルのバイト数、およびCSVを開いたときのExcelのスクリーンショットを表示するために質問を編集してください。 (PSはあなた自身の 'double'sを構築するのはかなりハードコアです:))ありがとう! – cxw