好的我在我的应用程序中遇到了我的计算问题,我很确定这是由于小数值很长。这是需要做的事情,因为它会大大缩短我需要的代码量。
下面是我目前如何拥有这部分代码...
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需要将该答案向上或向下舍入到最接近的一半,以便我的其余计算能够正常工作。我已经尝试在这里查看一些问题以找到解决方案,因为我之前看到过一个与此类似的问题,因为我无法记住在搜索中输入的位置或内容。如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:8)
最简单的方法是获取最终的数字,第2次和第2轮。然后除以2。
(abHipAvg = (((ab1+ab2+ab3)/3)+((hip1+hip2+hip3)/3)));
abHipAvg = roundf(abHipAvg * 2.0f) / 2.0f;
与neckAvg相同。