[英]How to convert int to Double in C programming
int num1, num2;
double average;
average=(double)(num1+num2)/2;
printf("average: %d", average);
我的測試 printf 顯示平均值為:0
這可能太簡單了,但我看不到。 我的輸入都是“int”,平均值是“double”,但不知何故計算不正確?
您對printf
使用了錯誤的格式說明符。
%d
格式說明符期望使用int
參數,但是您要傳遞double
。 使用錯誤的格式說明符會導致未定義的行為 。
要打印double
,請使用%f
。
printf("average: %f\n", average);
無需修改語句average=(double)(num1+num2)/2;
要在printf
內部獲得預期的結果,請使用%f
而不是%d
(num1+num2)
,其結果為integral
類型。 可以說15
。 接下來,當您執行(double)15/2
結果是7.500000
的floating
型。 average = (double)7.500000
平均值保持7.500000
但是由於您在%d
打印,因此未定義行為得到0
。 而是使用%f
這是工作中的一個
int main() {
int num1 = 7, num2 = 8;
double average;
average = (double)(num1 + num2)/2;
printf("average: %f\n", average);
return 0;
}
int num1, num2;
double average;
average=(num1+num2)/2.; // Using a decimal point forces 2 to be a double.
printf("average: %f\n", average); // Use the correct specifier for double: %f
您應該使用printf(“ average =%f”,avearge); 而不是使用“%d”來打印平均值。我認為它將解決您的問題...
整數除法可得出整數結果: 1/2 == 0
5/3 == 1
, 1/2.0f == 0.5f
。如果要浮點結果,則至少一個操作數必須是浮點類型: 1/2.0f == 0.5f
, 5/3.0 == 1.6667
等
因此,您需要將總和除以2.0
而不是2
:
average = (num1 + num2)/2.0;
其次,您需要將%f
格式說明符用於浮點輸出:
printf( "average: %f\n", average );
如果你想要一個浮點數結果,至少有一個操作數必須是浮點數類型
這是我的解決方案:
平均值 = (num1 + num2)/(double)2;
printf ("1/2 的值為: %.4f\n", (double)(1/2));
1/2 的值為:0.0000
printf ("1/2 的值為: %.4f\n", (1/(double)2));
1/2 的值為:0.5000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.