math.min精度错误(找到:double)

时间:2015-04-08 07:13:54

标签: java

以下是产生精度错误,其中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");

任何解决方案?

2 个答案:

答案 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)