如何使用十进制变量

时间:2018-01-08 12:22:54

标签: objective-c variables decimal

我正在使用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值。

我尝试过将doublefloat设为临时值,但尽管temp = [(NSNumber *)[object objectAtIndex:4] intValue]/100;为80,但[(NSNumber *)[object objectAtIndex:4] intValue]都返回0。

2 个答案:

答案 0 :(得分:7)

int with 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,现在它应该可以工作。

答案 1 :(得分:1)

请将temp form int的类型更改为float或double。

double temp;
float temp;