关于ios:float和double有什么区别?

What's the difference between float and double?

当我运行以下代码时,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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");
}

回答如下。

1
2
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++的,但它也适用于Objto-C。