首页 > 解决方案 > 将 2^1024 表示为浮点数

问题描述

2^1024 是否可以用内置的浮点类型表示,例如 double 或 long-double?

标签: floating-point

解决方案


2^1024 是否可以用内置的浮点类型表示,例如 double 或 long-double?

2 1024的值为 1.797693134862315907729...*10 308

以下能够将 2 1024的近似值打印为long double. 然而这个值通常超过最大有限doubleDBL_MAX表示 2 1024的能力取决于实现。下面是一个常见的实现。

#include <float.h>
#include <math.h>
#include <stdio.h>
int main(void) {
  long double two1024 = powl(2,1024);
  printf("2^1024  %.21Le\n", two1024);
  printf("DBL_MAX %.21Le\n", DBL_MAX*1.0L);
  return 0;
}

输出

                         v----- Difference begins here
2^1024  1.797693134862315907729e+308
DBL_MAX 1.797693134862315708145e+308

注意:
C 只要求LDBL_MAX >= DBL_MAX >= 1.0e+37.
DBL_MAX通常是binary64的最大有限值或 ~1.7976931348623157...e+308。
在某些系统上,long double范围与范围相匹配double


推荐阅读