好的,这完全没有意义:
我创建了一个 NSNumber:
NSNumber *n = [NSNumber numberWithInt:37669178];
然后我将该值作为整数和浮点数回显:
int i = [n intValue];
float f = [n floatValue];
以下是他们的价值观:
int: 37669178
float: 37669176.000000
啊!?!?!
有人可以向我解释为什么会发生这种情况以及如何解决它。这肯定不是一个精确的问题。37,669,178 在浮点数的精度范围内。
谢谢,
道格
更新
好吧,现在我完全糊涂了。参考 math.h
#define MAXFLOAT ((float)3.40282346638528860e+38)
整数值 37669178 为 3.7669178e+7,完全在允许的最大浮点值范围内。所以, [n floatValue] 应该返回 37669178.0而不是37669176.0
我在这里想念什么?