Какая разница между 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

Почему значение float изменилось на 10000000.00 вместо 10000000.01?

Ответ 1

float 32-бит, а double - 64-битный. Поплавок имеет меньше значащих цифр, чем двойной.

Значение float недостаточно для хранения 10 цифр вашего 10000000.01.

Также см. Разницу между float и double для получения более подробной информации. Это примерно C/C++, но оно относится и к Objective-C.