浮动和双重有什么区别?

时间:2013-04-19 15:43:07

标签: ios objective-c

当我运行以下代码时,

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?

3 个答案:

答案 0 :(得分:36)

float是32位,而double是64位。浮点数的有效数字少于双数。

float值不足以容纳10000000.01的10位数。

有关详细信息,另请参阅Difference between float and double。这与C / C ++有关,但它也适用于Objective-C。

答案 1 :(得分:1)

Double

  1. 表示64位浮点数。
  2. 精度至少为15个十进制数字。

浮动

  1. 浮点数表示一个32位浮点数。
  2. 浮点数的精度可以低至6个十进制数字。

要使用的适当浮点类型取决于您需要在代码中使用的值的性质和范围。在任何一种都适合的情况下,最好使用Double。

答案 2 :(得分:0)

精度

  • Float - 32 位(7 位)浮点精度
  • 双 - 64 位(15 位)浮点精度
  • 为有符号位分配一位。

内存要求

  • 浮点数 - 4 个字节
  • 双 - 8 字节

范围

  • 浮动 - 在 1.2E-38 到 3.4E+38 之间
  • 双倍 - 在 2.3E-308 到 1.7E+308 之间