将我的十进制浮点数舍入到最接近的一半或整数?

时间:2011-04-05 11:07:55

标签: objective-c c ios4

好的我在我的应用程序中遇到了我的计算问题,我很确定这是由于小数值很长。这是需要做的事情,因为它会大大缩短我需要的代码量。

下面是我目前如何拥有这部分代码...

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));

我需要做的是将“abHipAvg”和“neckAvg”四舍五入到最接近的.5或.0。用户只会输入.25,.5或.75但是一旦我将它们除以3 i需要将该答案向上或向下舍入到最接近的一半,以便我的其余计算能够正常工作。我已经尝试在这里查看一些问题以找到解决方案,因为我之前看到过一个与此类似的问题,因为我无法记住在搜索中输入的位置或内容。如果有人能指出我正确的方向,我会非常感激。

1 个答案:

答案 0 :(得分:8)

最简单的方法是获取最终的数字,第2次和第2轮。然后除以2。

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

与neckAvg相同。