2016-01-28 66 views
1

想分兩個數得到的結果是這樣的:如何在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); 
+1

2.50不是整數。它不能存儲在一個'int'中。 –

+0

'int'的意思是「整數」,你知道... –

+0

雖然浮點是一個解決方案,但也許你想了解更多關於'定點'。 – user3528438

回答

6

你需要一個float變量來存儲結果。 int只存儲整數。此外,在執行除法之前,您還必須指定其他變量。


做這樣的事情

float c; 
. 
. 
. 
c = (float)a/(float)b; 
printf("%f", c); 

注:

你不需要&printf()語句。

+0

謝謝你,我在新的c。 –

+0

@ Alex.Munoz,沒有問題。 :) – Haris

2

你必須使用float或double變量,而不是int(整數)變量。還要注意,兩個整數之間的分隔將導致整數結果,同時浮點/雙精度和整數之間的差值將導致浮點結果。這是因爲C隱含地將這個整數提升爲float。

例如:

5/2 = 2 
5/2.0f = 2.5 

注2.0,這實際上意味着,我們正在與一個浮動分裂。

+0

'.0'意味着我們用「double」分割。 – chux

+0

@chux right,fixed –

2

'/' - 符號用於除法。無論何時使用C語言,您將整數除以整數並將數據存儲爲整數,則作爲輸出的答案是整數。 例如

int a = 3, b = 2, c = 0; 
c = a/b; // That is c = 3/2; 
printf("%d", c); 

輸出接收是:1個
原因是已使用的變量的類型,即,整數(int
每當整數被用於存儲的輸出,結果將被存儲爲整數而不是十進制值。

爲了存儲小數結果,C語言提供floatdoublelong floatlong 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,就像我一樣,然後答案就會反映出來。

+0

https://ideone.com/fsiGKV – user3528438

+0

@ user3528438您認爲我已經從那裏複製了答案?讓我告訴你,這是我自己的樣本。我剛剛有一些數字來支持我的回答。我不知道你爲什麼奉獻我,我沒有寫錯任何東西。我的答案是適當的。 –

+1

不,我把你的代碼複製到那裏,以顯示我爲什麼downvoted:你的答案是不正確的(看看'stdout',或者嘗試自己編譯和運行你的代碼)。 – user3528438

2

爲了避免浮點類型轉換,你可以直接使用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);