在C语言中,为什么Double类型不能像您应该的那样给您2 ^ 64?

问题描述 投票:-4回答:1

如果sizeof()给出一个'double'类型的8个字节。然后,双精度类型应该能够存储2 ^ 64位并输出那么多位数,即2 ^ 63 = 9.2233720368548E + 18。

但是我有点奇怪。

     1  #include <stdio.h>
     2  #include <stdbool.h>
     3  #include <math.h>
     4  
     5  int main(){
     6  double a;
     7  
     8  a = pow(2, 63);
     9  
    10  printf("Size of Double is = %d bytes\n", sizeof(a));
    11  printf("Print full number of 2^63 = %d\n", a);
    12  
    13  return 0;
    14  }

代替输出是>

Size of Double is = 8 bytes
Print full number of 2^63 = -283958688

[如果您想知道我是否正在64位Ubuntu上运行。

如果sizeof()给出一个'double'类型的8个字节。然后,双精度类型应该能够存储2 ^ 64位并输出那么多位数,即2 ^ 63 = 9.2233720368548E + 18。但是我有点奇怪。 1 ...

c double size
1个回答
1
投票

64位最多可以表示2 ^ 64 distinct values

© www.soinside.com 2019 - 2024. All rights reserved.