2015-04-08 3 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

ява ожидает одно целое, но получает двойной

Поскольку вы разделите 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) , который возвращает double. Вышеуказанное вызывает Math.min(int, int).

Смежные вопросы