о формате векторов с ++

0

Я прочитал содержимое файла на два вектора таким образом:

ifstream file1;
std::string line1;
std::vector<double> x1, y1;

file1.open(argv[1]);
while (std::getline(file1, line1))
{
double x = 0., y = 0.;
sscanf (line1.c_str(), "%lf %le\n", &x, &y);
printf("%.12lf %.17le\n", x, y); //print on screen
x1.push_back(x); //fill vectors
y1.push_back(y);
}
file1.close();

Когда я печатаю их на экране, я могу указать формат, который я хочу, чтобы они выглядели точно так, как они находятся в файле; но когда я использую "push_back" для заполнения векторов, я теряю исходный формат, а x1 и y1 приближаются таким образом, который не пригоден для моих последующих вычислений. Как передать исходный формат в x1 и y1? Заранее спасибо! Елена

  • 4
    Почти наверняка благодаря точности с плавающей запятой .
  • 1
    Что каждый ученый должен знать об арифметике с плавающей точкой, автор David Goldberg - docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
Теги:
vector
format

1 ответ

0

Что вы подразумеваете под словом "свободный исходный формат"? Внутренне плавающая точка не сохраняется в виде строки, и нет никакого следа того, какой формат использовался для ее ввода. Это необходимо для того, чтобы значения могли использоваться в последующих вычислениях.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню