如何輸出long double?


首先long double是C99引入的,但是如何printf格式化一個long double的數據的呢?

scanf一個double數據,是%lf,printf一個float或者double都是%f。

但是輸出一個long double是什么格式呢?

這個時候,我們需要c標准:

7  The length modifiers and their meanings are: 第七節,長度修飾符及其含義是:

截取需要部分,

 

指定以下d,i,o,u,x或X轉換說明符適用於
long int或unsigned long int參數; n 轉換說明符適用於指向long int參數的指針; c 轉換說明符適用於wint_t參數;  s 轉換說明符適用於指向wchar_t參數的指針; 或對以下a,e,e,E,f,F,g或G轉換沒有影響

由於 ll與l描述很相近,不再翻譯。

再看大寫的L:

指定以下a,A,e,E,f,F,g或G轉換說明符適用於long double參數。
如果一個長度修飾符出現在除上述指定的任何轉換說明符之外, 這種行為是未定義的。

后面是一個f與F的解釋:

 

我想此刻結論已經明顯了:

 

#include<stdio.h>

int main(void)
{
    long double std_test=1.2345;
    printf("%Lf\n",std_test);
    
    return 0;
}

 

大寫L,加f輸出long double。最后的f小寫和大寫沒影響,但是第一個 l 必須大寫成L。

如果寫成小寫l加f的格式,會報類型不兼容,這樣也達不到比double還高的精度。

所以,c標准還是開發不可或缺的參考資料。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM