Мне нужно преобразовать строку в двойную с точностью до 15 цифр
Я прочитал много статей и похожих вопросов, и они предложили использовать setprecision (15) при распечатке чисел на экране.
Например:
string line = "34.9438553";
double lon1 = strtod(line.c_str(),NULL);
если я напишу
cout << lon1;
он будет печатать только 34,9439 вместо 34,9438553
Я мог бы написать
cout << setprecision(15) << lon1;
и это будет работать, но мне нужно, чтобы сама переменная lon1 имела точность 15 цифр, потому что мне нужны целые числа внутри переменной, а не только при выводе ее на экран.
Кто нибудь знает как это сделать ?
setprecision
устанавливает точность печати, а не точность двойной. strtod
считывает в double до минимума точности, доступные в double или в строке (в данном случае ограниченные строкой).
Короче говоря, у вас уже есть полная точность вашей строки в lon1
используя strtod
,
Других решений пока нет …