[ https://issues.apache.org/jira/browse/KYLIN-3306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16407495#comment-16407495 ]
Shaofeng SHI commented on KYLIN-3306: ------------------------------------- kylin-it/src/test/java/org/apache/kylin/cube/cuboid/algorithm/ITGeneticAlgorithmTest.java:24:8: 无用导入 - org.junit.Ignore 。 [UnusedImports] > Fix the rarely happened unit test exception of generic algorithm > ---------------------------------------------------------------- > > Key: KYLIN-3306 > URL: https://issues.apache.org/jira/browse/KYLIN-3306 > Project: Kylin > Issue Type: Bug > Reporter: Zhong Yanghong > Assignee: Zhong Yanghong > Priority: Major > Fix For: v2.3.1 > > Attachments: APACHE-KYLIN-3306.patch, APACHE-KYLIN-3306.patch > > > There's a bug in the following code: > {code} > private Chromosome rouletteWheel(final List<Chromosome> chromosomes, final > double totalFitness) { > float rnd = (float) > (GeneticAlgorithm.getRandomGenerator().nextDouble() * totalFitness); > float runningScore = 0; > for (Chromosome o : chromosomes) { > if (rnd >= runningScore && rnd <= runningScore + o.getFitness()) { > return o; > } > runningScore += o.getFitness(); > } > return null; > } > {code} > We should use double instead of float. > For example, (float) (0.9999999988948809 * 40.510999999999996) = 40.511 > > 40.510999999999996 -- This message was sent by Atlassian JIRA (v7.6.3#76005)