2016-04-27 41 views
-18
#include <stdio.h>    
#include <float.h>   

int main() {  
    printf("storage size of long double %d \n", sizeof(long double)); 
    printf("minimum long double positive value of %e \n", LDBL_MAX); 
    printf("maximum long double positive value of %e \n", LDBL_MIN); 
    printf("Precision value of %d", LDBL_DIG);   
    return 0;  
}  

正確的數值,以下是輸出C編程,沒有得到的長雙

Success time: 0 memory: 2160 signal:0  

storage size of long double 12  

maximum long double positive value of -nan  

minimum long double positive value of -0.000000e+00 

Precision value of 18 


float 4 byte 1.2E-38 to 3.4E+38 6 decimal places   
double 8 byte 2.3E-308 to 1.7E+308 15 decimal places   
long double 10 byte 3.4E-4932 to 1.1E+4932 19 decimal places   

我得到了floatdouble但與long double正確的價值;我究竟做錯了什麼?

+4

你爲什麼使用C#標籤? – Schafwolle

+0

哪個標籤應該用於這個問題 –

+3

@PvVimalNair符合問題的標籤。 C – Mafii

回答

9

您需要使用L標誌(%Le),以表示你通過long double

printf("minimum long double positive value of %Le \n", LDBL_MAX); 
printf("maximum long double positive value of %Le \n", LDBL_MIN); 

否則原代碼從堆棧中得到long double的一部分,其解釋爲double這顯然變得一團糟。

+0

請發一張圖片或代碼 –

+0

給我完整的代碼,嘗試這一個,但沒有得到適當的價值。 –

+7

@PvVimalNair:你有什麼價值,你會期待什麼價值?來吧,那是在調試101,真的。我得到'1.189731e + 4932' /'3.362103e-4932',這對我來說很好。 – DevSolar