長雙我有號碼科學記數法存儲爲字符的字符串,其中一些有多達20
位的文本文件。例如,2.3456789e-015
。我需要將其轉換爲長整數,以便對其執行一些數學運算。如何解析從科學記數法
我該如何做到這一點?
long double number = 2.3456789e-015;
我知道我可以聲明長雙像這樣,但麻煩的是當我有一個字符串的數量和需要分別指定基以及指數。 pow()
函數僅適用於雙打和cpowl()
無法格式化爲printf
。保持精度非常重要!
長雙我有號碼科學記數法存儲爲字符的字符串,其中一些有多達20
位的文本文件。例如,2.3456789e-015
。我需要將其轉換爲長整數,以便對其執行一些數學運算。如何解析從科學記數法
我該如何做到這一點?
long double number = 2.3456789e-015;
我知道我可以聲明長雙像這樣,但麻煩的是當我有一個字符串的數量和需要分別指定基以及指數。 pow()
函數僅適用於雙打和cpowl()
無法格式化爲printf
。保持精度非常重要!
嘗試double atof(const char*)
。
sscanf(str, "%lf", &number)
瞭解任何格式。 scanf函數和sscanf允許檢查轉換的結果:
if(sscanf(str, "%lf", &number))
{
printf("number = %le\n", number);
}
如果你想字符串轉換爲long double,使用[stold][1]
如果你想printf
長雙,使用%Lf
。
['strtold'](http://en.cppreference.com/w/c/string/byte/strtof)對於這份工作來說似乎是一個不錯的選擇。 – WhozCraig 2015-02-12 06:31:57