float和double有什么区别?

当我运行下面的代码时,

NSString* s= @"10000000.01"; float f = [s floatValue]; double d = [s doubleValue]; if(f > 10000000) { NSLog(@"Over Value"); } else { NSLog(@"OK Float"); } if(d > 10000000) { NSLog(@"Over value"); } else { NSLog(@"OK Double"); } 

答复如下。

 2013-04-19 17:07:29.284 float[2991:907] OK Float 2013-04-19 17:07:29.287 float[2991:907] Over value 

为什么浮动值更改为10000000.00而不是10000000.01?

float是32位而double是64位。 一个浮点数的有效数字less于两倍。

float值不足以保存10000000.01的10位数字。

另请参阅float和double之间的差异以获取更多详细信息。 这是关于C / C ++,但它也适用于Objective-C。