Java делится неправильно

Я использую Java 7

Я пытаюсь получить двойное от деления двух целых чисел:

double chance = 1/main.getConfig().getInt("dailygiftItems.items."+key+".chance");
double w = Math.random();
System.out.println("Pulled: "+main.getConfig().getInt("dailygiftItems.items."+key+".chance"));
System.out.println("itemChance: "+chance);
System.out.println("itemRand: "+w);
if(!(w < chance))continue;

Однако шанс возвращает 0. Как вы видите, я отладил все значения, вот что они приносят мне:

Вытащил: 5

itemChance: 0

itemRand: некоторый случайный двойник (работает правильно)

Я думал, что если я сделал свою математику неправильно и 5/1 не 0,2, поэтому я использовал калькулятор. Однако калькулятор вернул мне 0.2.

Затем я протестировал на более простом тестировании ту же проблему:

public class Test
{

    public static void main(String[] args)
    {
        double chance = 1/5;
        double w = Math.random();
        System.out.println("Chance: "+chance);
        System.out.println("Random: "+w);
        if(!(w < chance))
        {
            System.out.println("no");
            return;
        }
        System.out.println("yes");
    }

}

Это дало тот же результат, что и:

Шанс: 0

w: некоторый случайный двойной (рабочий)

Мои вопросы: почему Java не делит это правильно, и как я могу это исправить?

1 ответ

Использование double chance = 1./main.getConfig().getInt("dailygiftItems.items."+key+".chance");

. после 1 заставит компилятор считать это плавающей точкой (double) операция.

Другие вопросы по тегам