Objective c 如何使用十进制变量
我使用For循环遍历数组中包含百分比的变量。对于每个值,我通过一个等式得到所有百分比的平均值。唯一的问题是,我不确定如何更改变量类型以适应小数,同时也使用我的等式Objective c 如何使用十进制变量,objective-c,variables,decimal,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 ite
// 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设置为double或float,但在
temp=[(NSNumber*)[objectAtIndex:4]intValue]/100行都返回0代码>尽管[(NSNumber*)[objectobjectatindex:4]intValue]是80。请将临时表单int的类型更改为float或double
double temp;
float temp;
请将临时表单int的类型更改为float或double
double temp;
float temp;
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与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,现在应该可以工作了