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
) операция.