Мне нужен способ преобразования этой строки в ее точное числовое представление. Я пробовал немало вещей, и, как я знаю, это должно работать (знаменитые последние слова). Я стараюсь держаться подальше от установки библиотек, и у меня есть много этих чисел для преобразования.Прецизионность при преобразовании десятичного числа строки
Я понимаю, что трудно представить длинные десятичные числа в двоичном формате, но мне нужно решение.
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
string data = "138.6470184568";
cout << atof(data.c_str()) << endl;
return 0;
}
Выход
138.647
Что вы собираетесь делать с ними после преобразования? Вы используете GCC? Похоже, что у него есть некоторая поддержка десятичной суммы, встроенная без библиотеки - http://stackoverflow.com/questions/14096026/c-decimal-data-types#comment19516201_14096071 – TessellatingHeckler
Значение может храниться точно в двоичном виде или нет. t зависит от длины в десятичной форме, но может ли она быть представлена диадической фракцией или нет. Например, 0,1 не может быть правильно отображен в двоичном формате, хотя он очень короткий, но 0.000244140625 может –
и ** не использовать ** atof', а также 'atoi'. Это небезопасно. Используйте ['strtod'] (http://en.cppreference.com/w/cpp/string/byte/strtof), потому что он обеспечивает проверку ошибок –