2015-04-08 70 views
-2

以下是製備其中的java期望單個整數精度誤差,但是得到一個雙..math.min精度誤差(實測值:雙)

if (Compute.isGroundToAir(ae, target) 
    && game.getOptions().booleanOption("stratops_aa_fire") 
    && (null != te) 
    && (te instanceof Aero)) { 
    int vMod = ((Aero) te).getCurrentVelocity(); 
    if (game.getOptions().booleanOption("aa_move_mod")) { 
    vMod = Math.min(vMod/1.5, 4); 
    } 
    toHit.addModifier(vMod, "velocity"); 

任何解決方案?

+2

請添加您收到的錯誤! – Phate01

+2

請將您的代碼分成幾行,非常難以閱讀移動應用程序。 –

回答

1

的Java只需要一個整數,但得到一個雙

因爲你用雙分裂INT。這得到了一倍。

System.out.println(2/1.5); // => 1.3333333333 

使用Math.round方法:

System.out.println(Math.min(Math.round(vMod/1.5), 4); 
0

你的問題還不是很清楚,但我懷疑你需要的是:

vmod = Math.min(vmod * 2/3, 4); 

以雙1.5劃分,要調用Math.min(double, double) ,它返回一個雙。以上調用Math.min(int, int)