2014-06-13 131 views
0

我有一個雙重的,當分配總是回來0.0,但不應該發生。c#double - 爲什麼答案總是0?

我的代碼是

double test = (27096140/27216140); 

這個問題的答案應該是0.9955 ....

我沒有正確使用雙原始類型?

乾杯

編輯

當然,我是用int和無漂浮點。 知道這將是一個常識的問題。

+0

必須轉換的數字浮動或雙你實際上可以宣佈的數字。 – user1929959

回答

2

你實際上是在這裏進行整數除法,因爲這兩個數字是整數。這迫使計算結果爲int,這會截斷精度,因此最終得到0

您需要告訴編譯器您實際上使用的是浮點數而不是int's,只需在其中一個數字上添加浮點數即可解決此問題。

double test = (27096140.0/27216140); 

另外,雙打

double a = 27096140; 
double b = 27216140; 
double test = (a/b); 

甚至投數在計算

double test = ((double)27096140/27216140) 
3

您使用整數除法,你應該使用浮點除法:

double test = (27096140.0/27216140); 
1

數字27096140和27216140是整數,所以分工的結果也是一個int:0 然後,這是投到一個雙倍:0.0

2

因爲你使用整數而不是雙打。使用:

double test = (27096140.0d/27216140.0d);