로 반올림됩니다 내가 가지고있는 다음과 같은 값 :작은 수는 0
i->fitness = 160
sum_fitness = 826135
나는 작업을 수행합니다
i->roulette = (int)(((i->fitness/sum_fitness)*100000) + 0.5);
하지만 난에 0
가 계속 i->roulette
.
또한 double
변수에 i->fitness/sum_fitness
을 저장하려고 시도한 다음 다른 작업을 적용하기 만하면 0
이됩니다.
나는 160/826135
이 그렇게 작은 숫자이므로 0
으로 반올림한다고 생각합니다.
어떻게이 문제를 해결할 수 있습니까? 나는 결국 이런 짓을,
모두에게 감사 :
당신에게편집 감사
double temp = (double)(i->fitness);
i->roulette = (int)(((temp/sum_fitness)*100000) + 0.5);
그리고 그것은했다.
모든 답변이 비슷하므로 하나를 선택하기가 어렵습니다.
두 배로 g ___''(1956)''(1945673에서 잘린'int') – bolov
'((double) (I-> fitness))/((double) sum_fitness))' –