int main(void) {
float a;
scanf("%f", &a);
double c = sqrt(a);
printf("%f", c);
return 0;
}
浮點變量會生成正確的輸出。 但是,將數據類型更改爲雙倍結果是NaN。我的代碼在將數據類型從float更改爲double時生成-nan
int main(void) {
float a;
scanf("%f", &a);
double c = sqrt(a);
printf("%f", c);
return 0;
}
浮點變量會生成正確的輸出。 但是,將數據類型更改爲雙倍結果是NaN。我的代碼在將數據類型從float更改爲double時生成-nan
您應該使用格式說明符%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。
變量'a'應該是一個浮點類型(如提到的問題) –
@AnishSharma,閱讀下面的問題 - *將數據類型改爲double * - 儘管我同意OP應該發佈該代碼。 –
是的,我可以看到。他的問題說''float變量導致正確的輸出。但是,將數據類型更改爲double結果是NaN'>,他希望將數據類型從float更改爲double,而不是double到double。您剛分配了一個雙變量給另一個雙變量。 –
您正在使用哪種編譯器和操作系統? –
您應在使用雙輸入時使用格式說明符'%lf'。你可能沒有這樣做,導致NaN。 –
「我的代碼生成-nan」顯示無需修改即可重現問題的代碼。 –