如何使用十进制变量



我正在使用 For 循环来循环访问包含百分比的数组中的变量。对于每个值,我都会运行一个等式,以求所有百分比的平均值。唯一的问题是我不确定如何更改变量类型以适应小数,同时还要处理我的方程。

// Calculate average of all percentages for specific exercise
long totalNumber = 0;
int temp;
long numberOfObjects = [iterationArray count];
for (NSArray *object in iterationArray) {
    temp = [(NSNumber *)[object objectAtIndex:4] intValue]/100;
    totalNumber = totalNumber + temp;
}
exercisePercentage = (totalNumber/numberOfObjects)*100;
return exercisePercentage;

我知道temp是需要是小数的变量。我正在考虑使用NSDecimalNumber但不知道如何适应其余代码以返回long值。

我尝试将 temp 设为doublefloat但尽管[(NSNumber *)[object objectAtIndex:4] intValue]是 80,但两者都在行temp = [(NSNumber *)[object objectAtIndex:4] intValue]/100;上返回 0。

int

与 int 的除法总是返回 int,因此您需要将一个值转换为 float 或 double,如下所示:

// Calculate average of all percentages for specific exercise
double totalNumber = 0.0;
double temp;
long numberOfObjects = [iterationArray count];
for (NSArray *object in iterationArray) {
    temp = [(NSNumber *)[object objectAtIndex:4] intValue]/100.0;
    totalNumber = totalNumber + temp;
}
exercisePercentage = (totalNumber/numberOfObjects)*100.0;
return exercisePercentage;

看到它是 100.0,现在它应该可以工作了。

请将临时表单 int 的类型更改为浮动或双精度。

double temp;
float temp;

最新更新