2013-06-22 70 views
-3

有人會介意解釋爲什麼這不起作用嗎?除機會之外的所有變量都是整數,而機會是雙倍。當我打印所有的值時,他們肯定是正確的......但偶然總是以0.0出現。我知道這與將整數轉換爲雙打有關,因爲之前我有過這樣的問題。讓它做你想做的事情的關鍵是什麼?除法時,雙精度總是返回0

gladValue = (glad.dexterity+glad.tactical+weaponSkill); 
    oppValue = (glad.target.dexterity+glad.target.tactical+glad.target.agility); 
    chance = (gladValue/oppValue)*10.0; 

感謝

回答

3

你應該寫gladValue * 10.0/oppValue代替。

原因很微妙。您的括號表示首先計算gladValue/oppValue。但是這些變量是整數,所以結果是一個整數,因此你失去了小數部分。只有當它被10.0倍增時,它纔會被提升爲一倍;但到那時已經太晚了。

如果按照我說的那樣做,請記住*和/具有相同的優先級,並且操作從左到右發生,則在計算gladValue * 10.0時,將gladValue提升爲浮點並且該浮點結果爲除以oppValue。

+0

從第一次操作開始執行它需要的是交易嗎?編輯:我看到你的編輯。謝謝。 –