Java浮点数组提供了相同结果的多个副本

Java浮点数组提供了相同结果的多个副本,java,arrays,object,floating-point,Java,Arrays,Object,Floating Point,我得到了一个数组,除了一个零,所有的结果都是一样的,这是因为数学原因。我的fitness[]表中充满了不同的结果,即整数,而fortunePercentage应该包含一个表,其中包含每个对应的fitness值的百分比,最坏的情况是,它应该自动计算为零 相反,我得到了我的财富测试数组,它充满了相同的结果,如果我在我的适应度表中得到了三个相等的最差值,则得到一个0、两个或三个。为什么? 在java中,数组是否与C++中不同?< p>而不是: float[] fortuneTest =new floa

我得到了一个数组,除了一个零,所有的结果都是一样的,这是因为数学原因。我的fitness[]表中充满了不同的结果,即整数,而fortunePercentage应该包含一个表,其中包含每个对应的fitness值的百分比,最坏的情况是,它应该自动计算为零

相反,我得到了我的财富测试数组,它充满了相同的结果,如果我在我的适应度表中得到了三个相等的最差值,则得到一个0、两个或三个。为什么? 在java中,数组是否与C++中不同?

< p>而不是:

float[] fortuneTest =new float[fitnessTable.length];
    SelectionEngine selector = new SelectionEngine(fitnessTable);
    fortuneTest=selector.createFortuneWheel();
试试这个:

perc= (float) this.fitness[i]/maxVal;

这个.fitness[i]/maxVal;如果maxVal是一个int,那么这里就有整数除法。向float.perc=float this.fitness[i]/maxVal投掷一个;因此,我没有正确地转换类型?您能发布内容吗?第一次正确地转换时:perc=float this.fitness[i]/maxVal;但是第二次是不正确的:perc=float this.fitness[i]/maxVal;float5/5=1.0,所以约翰尼的观点是正确的。你是在除法后铸造浮子。除法的结果已经是整数了,你的施法将点0添加到结果中。从结果上看,情况似乎相反。在第二行中,您将整数除法(其结果无效)转换为浮点。在第一种方法中,调用浮点除法。我想。
perc= (float) this.fitness[i]/maxVal;
perc= (float) (this.fitness[i]/maxVal);