簡體   English   中英

C編程中如何將int轉Double

[英]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.500000floating型。
  • 來自上一步的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 == 11/2.0f == 0.5f 。如果要浮點結果,則至少一個操作數必須是浮點類型: 1/2.0f == 0.5f5/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM