читать длинный двойной из файла, а затем записать в другой файл

у меня есть следующая часть кода:

string v;

getline(linestream,v,' ');

double d=atof(v.c_str());

fprintf(writeFile3,"%f\n",(double)d);

но допустим, что первая строка имеет значение 0,08012901, но d = 0,080129, последние 2 значения опущены, как я могу получить полное двойное значение?

Спасибо

0

Решение

Дело не в том, что десятичные разряды не хранятся в d, Это просто fprintf по умолчанию печатает только 6 знаков после запятой. Чтобы напечатать 8, попробуйте

fprintf(writeFile3, "%.8f\n", d);

Вы не должны бросать d как double так как это уже имеет тип double,

0

Другие решения

Если вы хотите, чтобы цифры копировались точно, безусловно, самый простой способ — просто оставить цифры в виде строки:

string v;

getline(instream, v, ' ');

outstream << v;

Почти все, что преобразует цифры в double, а затем распечатывает значение, по крайней мере, имеет некоторый шанс получить результат, который немного отличается от ввода.

1

Я бы добавил к ответу выше, что все, что вы поставите после вызова переменной, будет отображаться. По умолчанию C ++ покажет 6.

т.е.
fprintf (writeFile3, «% .3f \ n», (double) d); будет отображать 3 десятичных знака в конце. Он также будет дополнен, так что если возможно, чтобы было больше 8 знаков после запятой, вы захотите сделать это больше, чем это. То, что я знаю о вас, не может установить флаг, чтобы просто отображать все десятичные точки. Это должно быть явным.

0
По вопросам рекламы [email protected]