2011-07-21 50 views

回答

12

doubledecimal都可以正常工作。

但是,如果你只寫:

// Wrong 
double x = 2/4; 

那麼它仍然會使用整數師 - 因爲兩個操作數的除法運算符是int類型。

您可以投一個或兩個操作數增加一倍,或者使用雙字面一個或兩個人:

// Any of these... 
double x = (double) 2/4; 
double x = 2/(double) 4; 
double x = (double) 2/(double) 4; 
double x = 2.0/4; 
double x = 2/4.0; 
double x = 2.0/4.0; 
double x = 2d/4; 
double x = 2/4d; 
double x = 2d/4d; 

注意兩個doubledecimal浮點類型。它們不代表任意的有理數(分數)。例如,既不能準確表示1/3。如果你需要一個合理的數字類型,你必須自己編寫或尋找第三方的實現。

+1

既然你提供了在你的例子可能性的整個主機,我已經添加了文字後綴的變化也是如此。 – Thorarin

+0

@Thorarin:非常感謝:) –

4

做除數確保至少有一個或被除數是一個浮點數:

double d = 2/4.0; 
Console.WriteLine(d): // Writes: 0.5 
3

使用2/4.0迫使它使用浮點運算。然後你就可以將其存儲在雙:

double d = 2/4.0; 

如果你有變量,真正的代碼,投除數爲double

int i = 2; 
int j = 4; 
double d = i/(double)j; 
1

你可以投,

double value = (double)2/4; 

或者你可以提供小數點輸入

double value = 2.0/4.0; 
1

float或double將完成這項工作。

float x = 2f/4f; 
double x = 2d/4d; 

請注意,您可以通過追加適當的字符(f或d)來指定常量值爲float或double。

要記住的重要一點是,第一個數據類型(左側)將決定結果的數據類型。 編輯:實際上,在這種情況下,任一值是一個浮點/雙精度將工作

所以......

var x = 2/4;//x is int (0) 
var x = 2f/4;//x is float (0.5f) 
var x 2d/4;//x is double (0.5d) 

C#將自動轉換INT浮動/雙左右...

float x = 2/4;//result type is int, but gets stored as convert float 

不管怎樣,希望有助於解釋一些事情