2016-05-14 72 views
-3
int main(void) { 
    float a; 
    scanf("%f", &a); 
    double c = sqrt(a); 
    printf("%f", c); 
    return 0; 
} 

浮點變量會生成正確的輸出。 但是,將數據類型更改爲雙倍結果是NaN。我的代碼在將數據類型從float更改爲double時生成-nan

+0

您正在使用哪種編譯器和操作系統? –

+2

您應在使用雙輸入時使用格式說明符'%lf'。你可能沒有這樣做,導致NaN。 –

+0

「我的代碼生成-nan」顯示無需修改即可重現問題的代碼。 –

回答

1

您應該使用格式說明符%lf來接受double

#include<stdio.h> 
#include<math.h> 

int main(void) { 
    double a; 
    scanf("%lf", &a); 
    double c = sqrt(a); 
    printf("%lf", c); //printf("%f", c) also works perfectly. 
    return 0; 
} 

由於您可能只使用%f,您將獲得NaN。

+0

變量'a'應該是一個浮點類型(如提到的問題) –

+0

@AnishSharma,閱讀下面的問題 - *將數據類型改爲double * - 儘管我同意OP應該發佈該代碼。 –

+0

是的,我可以看到。他的問題說''float變量導致正確的輸出。但是,將數據類型更改爲double結果是NaN'>,他希望將數據類型從float更改爲double,而不是double到double。您剛分配了一個雙變量給另一個雙變量。 –

相關問題