Хорошо, это абсолютно бессмысленно:
Я создал NSNumber:
NSNumber *n = [NSNumber numberWithInt:37669178];
Затем я отображаю значение как целое число и число с плавающей запятой:
int i = [n intValue];
float f = [n floatValue];
Вот их значения:
int: 37669178
float: 37669176.000000
Ха!?!?!
Может кто-нибудь объяснить мне, почему это происходит и как обойти это. Это, конечно, не может быть проблемой точности. 37 669 178 находятся в пределах точности поплавка.
Спасибо
Дуг
UPDATE
ОК, теперь я в полном замешательстве. Ссылаясь на math.h
#define MAXFLOAT ((float)3.40282346638528860e+38)
Целочисленное значение 37669178 равно 3,7669178e + 7, что находится в пределах максимально допустимого значения с плавающей запятой. Итак, [n floatValue] должно вернуть 37669178.0 , а не 37669176.0
Что мне здесь не хватает?