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