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位。 浮点数的有效位数比双数少。

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

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

链接地址: http://www.djcxy.com/p/78623.html

上一篇: What's the difference between float and double?

下一篇: union consisting of float : completely insane output