【发布时间】:2015-08-04 07:12:05
【问题描述】:
我正在使用 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 没有正确划分这个,我该如何解决?
【问题讨论】:
-
为什么你认为两个整数相除可以得到一个双精度值?对我来说毫无意义。
-
如果值为 13/5,则为双倍
-
结果将是
2,这是不正确的。 -
我希望结果是双精度,所以结果不会是 2。如果修饰符是 int,那么是的。
-
如果将两个整数相除,那么结果也将始终为整数。