以下是产生精度错误,其中java期望一个整数,但是得到一个双..
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");
任何解决方案?
答案 0 :(得分:1)
java需要一个整数,但是得到了一个双
因为你将int除以double。得到了一倍。
System.out.println(2 / 1.5); // => 1.3333333333
使用Math.round
方法:
System.out.println(Math.min(Math.round(vMod / 1.5), 4);
答案 1 :(得分:0)
你的问题很不清楚,但我怀疑你需要的是:
vmod = Math.min(vmod * 2 / 3, 4);
除以双1.5
,您正在调用Math.min(double, double)
,它返回一个double。以上调用Math.min(int, int)
。