2011-04-05 4 views
3

좋아, 메신저 내 애플 리케이션과 내 확신 계산에 문제가 꽤 오랫동안되는 소수로 인해 확신합니다. 이것은 필자가 필요로하는 코드의 크기를 대폭 단축 할 것이기 때문에 어쨌든해야 할 일이다. 내가 현재 내 코드의이 부분을 얼마나 아래십진수 부동 소수점을 반올림하거나 정수로 반올림 하시겠습니까?

은 내가해야 할 것은 가장 가까운 0.5 또는 0.0 .Users에 "abHipAvg"와 "neckAvg"라운드

float ab1 = [abdomen1Input.text floatValue]; 
float ab2 = [abdomen2Input.text floatValue]; 
float ab3 = [abdomen3Input.text floatValue]; 
float hip1 = [hips1Input.text floatValue]; 
float hip2 = [hips2Input.text floatValue]; 
float hip3 = [hips3Input.text floatValue]; 
float neck1 = [neck1Input.text floatValue]; 
float neck2 = [neck2Input.text floatValue]; 
float neck3 = [neck3Input.text floatValue]; 
float height1 = [heightInput.text floatValue]; 
float neckAvg; 
float abHipAvg; 
float cirVal; 

(abHipAvg = (((ab1+ab2+ab3)/3)+((hip1+hip2+hip3)/3))); 

(neckAvg = ((neck1+neck2+neck3)/3)); 

(cirVal = (abHipAvg - neckAvg)); 

입니다 ... .25, .5 또는 .75를 입력 할 것입니다. 그러나 일단 3으로 나누면 해당 계산을 가장 가까운 반쪽으로 반올림하여 나머지 계산을 올바르게 수행해야합니다. 나는 해결책을 찾기 위해 여기에 몇 가지 질문을 조사해 보았는데, 왜냐하면 나는 이것과 비슷한 것을 보았 기 때문에 검색을 어디에서 또는 무엇을 입력해야 하는지를 기억하기 전에 이것을 보았 기 때문이다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 감사하겠습니다.

답변

7

가장 쉬운 방법은 최종 숫자를 2 회 반복하는 것입니다. 그런 다음 2로 나눕니다.

(abHipAvg = (((ab1+ab2+ab3)/3)+((hip1+hip2+hip3)/3))); 
abHipAvg = roundf(abHipAvg * 2.0f)/2.0f; 

및 neckAvg와 동일합니다.

+1

고마워요. 니키가 정확히 내가 필요한 것 : –

+1

이것은 저에게 효과적이었습니다 : round (value * 100.0f)/100.0f; – rodowi

+0

'abHipAvg = roundf ((ab1 + ab2 + ab3) /1.5+ (hip1 + hip2 + hip3) /1.5)/2.0f' 대신에 3으로 나누어 곱셈을 피할 수 있습니다. 오버플로가 발생하지 않는다는 것을 알고 있다면 합계를 결합 할 수 있습니다. –

관련 문제