想分兩個數得到的結果是這樣的:如何在c中劃分2 int?
5/2 = 2.50
但它只輸出2.
我不現在我在做什麼錯。
這裏我的代碼:
int a;
int b;
int c;
printf("First number\n");
scanf("%d", &a);
printf("Second number\n");
scanf("%d", &b);
c = a/b;
printf("%d", &c);
想分兩個數得到的結果是這樣的:如何在c中劃分2 int?
5/2 = 2.50
但它只輸出2.
我不現在我在做什麼錯。
這裏我的代碼:
int a;
int b;
int c;
printf("First number\n");
scanf("%d", &a);
printf("Second number\n");
scanf("%d", &b);
c = a/b;
printf("%d", &c);
你需要一個float
變量來存儲結果。 int
只存儲整數。此外,在執行除法之前,您還必須指定其他變量。
做這樣的事情
float c;
.
.
.
c = (float)a/(float)b;
printf("%f", c);
注:
你不需要&
是printf()
語句。
謝謝你,我在新的c。 –
@ Alex.Munoz,沒有問題。 :) – Haris
你必須使用float或double變量,而不是int(整數)變量。還要注意,兩個整數之間的分隔將導致整數結果,同時浮點/雙精度和整數之間的差值將導致浮點結果。這是因爲C隱含地將這個整數提升爲float。
例如:
5/2 = 2
5/2.0f = 2.5
注2.0,這實際上意味着,我們正在與一個浮動分裂。
'.0'意味着我們用「double」分割。 – chux
@chux right,fixed –
'/' - 符號用於除法。無論何時使用C語言,您將整數除以整數並將數據存儲爲整數,則作爲輸出的答案是整數。 例如
int a = 3, b = 2, c = 0;
c = a/b; // That is c = 3/2;
printf("%d", c);
的輸出接收是:1個
原因是已使用的變量的類型,即,整數(int
)
每當整數被用於存儲的輸出,結果將被存儲爲整數而不是十進制值。
爲了存儲小數結果,C語言提供float
,double
,long float
和long double
。
無論何時您執行操作並希望輸出十進制數,則可以將上述數據類型用於生成的存儲變量。 例如
int a = 3, b = 2;
float c = 0.0;
c = (float)a/b; // That is c = 3/2;
printf("%.1f", c);
接收的輸出:1。5
所以,我認爲這會幫助你理解這個概念。
請記住:當您使用float
時,訪問說明符爲%f
。您需要將您的答案轉換爲float
,就像我一樣,然後答案就會反映出來。
https://ideone.com/fsiGKV – user3528438
@ user3528438您認爲我已經從那裏複製了答案?讓我告訴你,這是我自己的樣本。我剛剛有一些數字來支持我的回答。我不知道你爲什麼奉獻我,我沒有寫錯任何東西。我的答案是適當的。 –
不,我把你的代碼複製到那裏,以顯示我爲什麼downvoted:你的答案是不正確的(看看'stdout',或者嘗試自己編譯和運行你的代碼)。 – user3528438
爲了避免浮點類型轉換,你可以直接使用scanf和%f標誌。
float a;
float b;
float c;
printf("First number\n");
scanf("%f", &a);
printf("Second number\n");
scanf("%f", &b);
c = a/b;
printf("%f", c);
2.50不是整數。它不能存儲在一個'int'中。 –
'int'的意思是「整數」,你知道... –
雖然浮點是一個解決方案,但也許你想了解更多關於'定點'。 – user3528438