люди! Я боролся с этой проблемой в течение некоторого времени, и до сих пор я не нашел ее решения.
В приведенном ниже коде я инициализирую строку с номером. Затем я использую 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?
#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 из него).
Ваше двойное значение 888.4834966
но когда вы используете:
cout << "Double number:\t" << number << endl << endl;
Он использует точность по умолчанию для double, чтобы установить его вручную, используйте:
cout << "Double number:\t" << std::setprecision(10) << number << endl << endl;
Точность вашего вывода, вероятно, просто не показывает все данные в number
, Видеть это ссылка на сайт о том, как отформатировать вашу точность вывода.