2015-02-12 83 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