2015-02-12 145 views
0

长双我有号码科学记数法存储为字符的字符串,其中一些有多达20位的文本文件。例如,2.3456789e-015。我需要将其转换为长整数,以便对其执行一些数学运算。如何解析从科学记数法

我该如何做到这一点?

long double number = 2.3456789e-015; 

我知道我可以声明长双像这样,但麻烦的是当我有一个字符串的数量和需要分别指定基以及指数。 pow()函数仅适用于双打cpowl()无法格式化为printf。保持精度非常重要!

+0

['strtold'](http://en.cppreference.com/w/c/string/byte/strtof)对于这份工作来说似乎是一个不错的选择。 – WhozCraig 2015-02-12 06:31:57

回答

0

尝试double atof(const char*)

1

sscanf(str, "%lf", &number)了解任何格式。 scanf函数和sscanf允许检查转换的结果:

if(sscanf(str, "%lf", &number)) 
    { 
     printf("number = %le\n", number); 
    } 
2

如果你想字符串转换为long double,使用[stold][1]

如果你想printf长双,使用%Lf