Строка в научной нотации C ++ для двойного преобразования - PullRequest
12 голосов
/ 10 ноября 2009

У меня есть база данных, заполненная двойными числами, как эта:

1.60000000000000000000000000000000000e+01

Кто-нибудь знает, как преобразовать подобное число в удвоенное в C ++?

Есть ли "стандартный" способ сделать это? Или я должен свернуть свою собственную функцию?

Сейчас я делаю что-то вроде этого:

#include <string>
#include <sstream>



int main() {
    std::string s("1.60000000000000000000000000000000000e+01");
    std::istringstream iss(s);
    double d;
    iss >> d;
    d += 10.303030;
    std::cout << d << std::endl;
}

Спасибо!

Ответы [ 2 ]

17 голосов
/ 10 ноября 2009

Как то так? Это был бы "C ++" способ сделать это ...

#include <sstream>
using namespace std;

// ...

    string s = "1.60000000000000000000000000000000000e+01";
    istringstream os(s);
    double d;
    os >> d;
    cout << d << endl;

Отпечатки 16.

11 голосов
/ 10 ноября 2009

Требуется стандартная функция c atof ([A] SCII в [F] loat, но на самом деле она использует удваивания, а не числа с плавающей запятой).

...