我正在处理NSNumber的NSMutableArray,我遇到了一个奇怪的错误。 [NSNumber doubleValue](使用double 0构造)似乎不等于0.0。
错误出现在最简单的函数中:最大函数。
- (double) maxValY{
double max = DBL_MIN;
for (NSNumber *doubleNumber in arrayNumbers) {
if (max<[doubleNumber doubleValue]){
max = [doubleNumber doubleValue];
}
}
NSLog(@"max %f",max);
if(max <=0.0){
NSLog(@"max is equal to 0");
return 1;
}else{
NSLog(@"max is not equal to 0");
}
return max;
}
控制台打印:
2013-01-02 11:27:56.208 myApp[1920:c07] max 0.000000
2013-01-02 11:27:56.210 myApp[1920:c07] max is not equal to 0
答案 0 :(得分:2)
这不是一个错误:它是双精度。使用浮点数,您看到的并不一定是您所获得的。这个问题有更多信息:
Why do I see a double variable initialized to some value like 21.4 as 21.399999618530273?
最简单的解决方案是转换为整数,如果您关心的是数字是等于还是大于零。还有其他更复杂的选择:我所联系的答案有一些。某人在关于浮点数学的评论中给你的链接也可能有所帮助。