Так что я знаю, что setprecision(int n)
следует использовать при печати двойного значения с точностью n
. Тем не менее, я столкнулся с проблемой на проекте, который я работаю на том, что сродни этот код:Потеря точности при преобразовании двойного в строку в C++
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double var = 1.0000001;
cout << setprecision(10)<< var << endl;
string str = to_string(var);
cout << str << endl;
return 0;
}
Здесь выход:
1.0000001
1.000000
В проекте я нахожусь работая, мне нужно сохранить двойное значение как строку, и ему иногда понадобится более шести десятичных знаков точности. Здесь точность явно теряется при преобразовании. Любые указатели будут очень благодарны.
Возможный дубликат [Точность std :: to \ _string (double)] (http://stackoverflow.com/questions/14520309/the-precision-of-stdto-stringdouble) – Barmar
Вместо этого используйте 'stringstream' of 'to_string', поэтому вы можете использовать параметры форматирования. – Barmar
Два указателя: 1) 'int * p', 2) не следует использовать' std :: to_string', если вам нужно управлять точностью. – AnT