J'essaye d'écrire un fichier CSV, et j'ai une valeur qui est 6.49483e-005, qui est écrite correctement dans le CSV, mais elle ne s'affiche pas correctement dans Excel . il se lit comme 6,48E + 00. Je le fais en C++, si vous le souhaitez, vous pouvez demander du code, j'utilise long double pour la valeur qui est écrite dans le fichier CSV, puis je le convertis en chaîne, puis je l'écris.Convertir des exposants en CSV en utilisant Excel et C++
s = "00043E61"
digitstring = "00000000000001000011111001100001"
sum = 6.4753228798508644e-005
n = 278113
dans CVS, il est 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());
}
Oui, toujours code s'il vous plaît! :) --- Mais si c'est écrit correctement dans le fichier CSV, c'est probablement le format d'affichage de la cellule. Dans Excel, appuyez sur Ctl + 1 et remplacez Format par Scientifique avec 6 chiffres de précision. Voir si ça le fait. – cxw
il est toujours lu comme 6,494830E + 00. Toutefois, dans CSV, il est écrit 6.49483e-005 –
OK - Je peux être malentendu. Veuillez également modifier votre question pour afficher la valeur d'entrée 'unsigned n', les valeurs correspondantes' sum' et 'os.str()', les octets du fichier CSV et une capture d'écran de ce que Excel affiche lorsque vous ouvrez le fichier CSV. (PS construire votre propre «double» est assez difficile :).) Merci! – cxw