2
NSLog(@"original float value = %f", [anNSNumber floatValue]);
                 
float newFloat = [anNSNumber floatValue] - 1.0f;
                 
NSLog(@"newFloat = %f", newFloat);

给我

原始浮点值 = 215987480044765184.000000

newFloat = 215987480044765184.000000

你如何简单地从 a 中减去 1 float

4

2 回答 2

5

不,你不能进一步简化它。浮点数不同于整数。

另一件需要注意的事情是该float类型最多只能包含 24 位精度(大约 6-7 位精度的十进制数字)。您那里的数字超过了可用的精度float,并且减法量太小而不会影响24位精度,因此操作根本不会对结果进行任何更改

即使您在 中进行操作,问题也无法解决double,因为该数字甚至超过了 53 位精度double

根据您的要求,您可能需要 64 位整数类型(long long类型或更具体int64_t)。如果更大的数字需要这样的精度,那么基本类型是不够的。如果您需要非常高的精度,则可能需要外部库。

于 2012-06-22T02:46:27.587 回答
0

为什么你的第三行有: NSLog(@"newFloat = %f", idOfLastTweet ); 而不是 NSLog(@"newFloat = %f", newFloat ); ?

于 2012-06-22T02:50:58.600 回答