(C ++) std :: istringstream читает до 6 цифр от строки до двойной

люди! Я боролся с этой проблемой в течение некоторого времени, и до сих пор я не нашел ее решения.

В приведенном ниже коде я инициализирую строку с номером. Затем я использую std :: istringstream для загрузки содержимого тестовой строки в double. Тогда я cout обе переменные.

#include <string>
#include <sstream>
#include <iostream>

std::istringstream instr;

void main()
{
using std::cout;
using std::endl;
using std::string;

string test = "888.4834966";
instr.str(test);

double number;
instr >> number;

cout << "String test:\t" << test << endl;
cout << "Double number:\t" << number << endl << endl;
system("pause");
}

Когда я запускаю .exe это выглядит так:

Струнный тест: 888.4834966
Двухместный номер 888.483
Нажмите любую клавишу для продолжения . , ,

Строка имеет больше цифр и выглядит так, как будто std :: istringstream загружено только 6 из 10. Как я могу загрузить всю строку в переменную double?

0

Решение

#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>

std::istringstream instr;

int main()
{
using std::cout;
using std::endl;
using std::string;

string test = "888.4834966";
instr.str(test);

double number;
instr >> number;

cout << "String test:\t" << test << endl;
cout << "Double number:\t" << std::setprecision(12) << number << endl << endl;
system("pause");

return 0;
}

Он читает все цифры, они просто не все отображаются. Ты можешь использовать std::setprecision (нашел в iomanip) чтобы исправить это. Также обратите внимание, что void main не является стандартным, вы должны использовать int main (и вернуть 0 из него).

5

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

Ваше двойное значение 888.4834966 но когда вы используете:

cout << "Double number:\t" << number << endl << endl;

Он использует точность по умолчанию для double, чтобы установить его вручную, используйте:

cout << "Double number:\t" << std::setprecision(10) << number << endl << endl;
1

Точность вашего вывода, вероятно, просто не показывает все данные в number, Видеть это ссылка на сайт о том, как отформатировать вашу точность вывода.

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