我有一個雙重的,當分配總是回來0.0,但不應該發生。c#double - 爲什麼答案總是0?
我的代碼是
double test = (27096140/27216140);
這個問題的答案應該是0.9955 ....
我沒有正確使用雙原始類型?
乾杯
編輯
當然,我是用int和無漂浮點。 知道這將是一個常識的問題。
我有一個雙重的,當分配總是回來0.0,但不應該發生。c#double - 爲什麼答案總是0?
我的代碼是
double test = (27096140/27216140);
這個問題的答案應該是0.9955 ....
我沒有正確使用雙原始類型?
乾杯
編輯
當然,我是用int和無漂浮點。 知道這將是一個常識的問題。
你實際上是在這裏進行整數除法,因爲這兩個數字是整數。這迫使計算結果爲int
,這會截斷精度,因此最終得到0
。
您需要告訴編譯器您實際上使用的是浮點數而不是int
's,只需在其中一個數字上添加浮點數即可解決此問題。
double test = (27096140.0/27216140);
另外,雙打
double a = 27096140;
double b = 27216140;
double test = (a/b);
甚至投數在計算
double test = ((double)27096140/27216140)
您使用整數除法,你應該使用浮點除法:
double test = (27096140.0/27216140);
數字27096140和27216140是整數,所以分工的結果也是一個int:0 然後,這是投到一個雙倍:0.0
因爲你使用整數而不是雙打。使用:
double test = (27096140.0d/27216140.0d);
必須轉換的數字浮動或雙你實際上可以宣佈的數字。 – user1929959