2009-07-10 3 views
2

루비를 사용하여 설문 조사를 진행하고 있지만 답변이 정확하지 않습니다. 결과는 100 %이지만 내 대답은 찾고 있습니다. 때로는 101 % 또는 99 %이고 나는 내 수레의 반올림이 분명하지만 대답을 반올림하지 않으면 매우 긴 수레이기 때문에 나는 그 (것)들을 올바르게 얻을 수 있습니다. 결과를 계산하고 결과를 표시하는 코드는설문 조사 결과를 100 %로 반올림하는 데 문제가 있습니다.

> 
    @general_poll_graph_data = generalsortedoptions.collect do |o| 
      option = [keys[count],  (((o.poll_votes.count.to_f)/@general_poll.poll_votes.count.to_f)*100).round_to(1)] 
      count = count + 1 
      option 
    end 

답변

9

나는 수학에서 반올림이 어떻게 작동하는지 생각합니다. 예를 들어 투표 수가 1 인 옵션이 3 개인 경우 가장 가까운 비율로 반올림하면 33 %, 33 %, 33 %가 주어지며 물론 99 %가 합산됩니다. 어느 것이 옳은가?

데이터를 fudging없이 정밀하게 100 %를 추가 할 수는 없습니다 (위의 경우에 즉, 당신은 인위적으로 하나의 옵션을 34 %를 줄 수 있지만, 실제 투표를 대표 할 수 없다.)

내 솔루션 : 소수점 이하 1 자리로 표시하고 걱정하지 마세요. 정확하게 100 %까지 추가하십시오.

+0

나는 실제로 똑같은 일을 생각하고있었습니다. –

1

이것은 상대 비율을 반올림 할 때마다 발생합니다. 근사치만큼 잘못된 것은 아닙니다. 합계를 100으로 강요 할 수 있습니다. 가장 좋은 방법은 조정할 필요가있는 것을보고 해당 값에서 반올림 한 값에서 가장 가까운 값을 취하는 것이지만 여전히 왜곡 될 위험이 있습니다 결과는 이미하고있는 것보다 훨씬 더 큽니다.

일반적으로 그 왜곡을 줄이기 위해 백분율을 소수점 이하 한 자리 (예 : 0.6 %, 1 %)로 표시하는 것이 좋습니다.

관련 문제