Мне нужен способ конвертировать эту строку в ее точное представление числа. Я пробовал довольно много вещей, и, насколько я знаю, это должно сработать (знаменитые последние слова). Я пытаюсь держаться подальше от установки библиотек, и у меня есть много этих чисел для преобразования.
Я понимаю, что трудно представить длинные десятичные числа в двоичном виде, но мне нужно решение.
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string data = "138.6470184568";
cout << atof(data.c_str()) << endl;
return 0;
}
Выход
138.647
Оказывается, что он конвертирует правильно, но, когда его просят подсчитать число, он дает только 3-4 десятичных знака. Кто-нибудь знает почему?
#include <iostream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main()
{
string data1 = "138.6470184568";
string data2 = "138.6470184568";
double data3 = atof(data1.c_str()) + atof(data2.c_str());
cout << data3 << endl;
cout << setprecision(15) << data3;
return 0;
}
дает
277.294
277.2940369136