2015-06-21 78 views
-2

我在執行除法時遇到問題。我有這塊代碼,其中這個操作必須是40.4239,但我相反我有這個結果:0.005595493389623997
我可以理解小數的數量,我必須用decimalFormat解決,但我不能理解這個結果...
contTotal在這種情況下是288975,因此:(288975/714861)*100 = 40.4239
任何想法......?錯誤的除法結果與雙重值

int contTotal = 0; 
double result = 0; 
    for(DoubleWritable val : valores) { 
     contTotal += val.get(); 
    } 
    result = (contTotal/714861) *100; 
+0

嘗試將'contTotal'的類型更改爲'double'。另外'(288975/714861)* 100'不是'40.4239',因爲'int/int'返回'int'。 '(288975d.0/714861)* 100'爲'40.42394255666486'。 – Pshemo

+0

是的,我試過了,但我有同樣的結果... – An4

+0

然後問題在於你沒有向我們展示的部分代碼。你確定'contTotal'是'288975'嗎? – Pshemo

回答

1

不知道這是否會有所幫助,但它確實看起來像你正在做的分裂兩次,因爲(40.423/714861)*100實際上是0.005595493389623997。 我肯定會檢查。

0

你可以這樣做:

double z = (288975.0/714861.0)*100.0; 
+0

是的,我試過了,我得到了這個結果:0.00565479758395896 – An4

+0

這完全不可能 - 這裏顯示的計算肯定會返回40.4239。 – nneonneo

+0

contTotal應該是double,而不是int。 – hs2345