当我运行以下代码时,
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?
答案 0 :(得分:36)
float
是32位,而double
是64位。浮点数的有效数字少于双数。
float
值不足以容纳10000000.01
的10位数。
有关详细信息,另请参阅Difference between float and double。这与C / C ++有关,但它也适用于Objective-C。
答案 1 :(得分:1)
Double
浮动
要使用的适当浮点类型取决于您需要在代码中使用的值的性质和范围。在任何一种都适合的情况下,最好使用Double。
答案 2 :(得分:0)
精度
内存要求
范围