이 표현식이 0이되지 않도록하려면 어떻게해야합니까?Math.pow가 올바른 값을 반환하도록 하시겠습니까?
double dBaseFitness = (double) baseFitness;
x.shortfitness = (long)(Math.pow(dbaseFitness, dbaseFitness/8.0)/100.0)
*(long)(Math.pow((double)x.genome.GSIZE, -.1)/100.0);
x.shortfitness는 긴 값입니다. x.Genome.GSIZE는 int입니다.
각 표현식을 100으로 나누는 유일한 이유는 결과가 long 유형의 최대 값을 초과하지 않기 때문입니다.
baseFitness 및 x.shortfitness의 데이터 유형은 무엇입니까? – zebediah49
@ ErnestFriedman-Hill @SteveKuo, 둘 다 감사합니다. 두 값만 사용하도록 expresion을 업데이트했지만 여전히 0이됩니다. 캐스트를 오래 만들려면 어떻게해야합니까? – wbarksdale
아마도 실제 답변은 1 미만이므로 0으로 잘립니다. 답변을 배정에 할당하고 장부에 배정하기 전에 출력하여 값이 무엇인지 확인할 수 있습니다. –