floating-point - 将 2^1024 表示为浮点数
问题描述
2^1024 是否可以用内置的浮点类型表示,例如 double 或 long-double?
解决方案
2^1024 是否可以用内置的浮点类型表示,例如 double 或 long-double?
2 1024的值为 1.797693134862315907729...*10 308
以下能够将 2 1024的近似值打印为long double
. 然而这个值通常超过最大有限double
:DBL_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
。
推荐阅读
- python - 防止关闭 Python Tkinter 窗口(包括 Alt+F4)
- ios - 如何继续在 Apple Watch 上收集运动传感器数据?
- shell - while循环脚本在满足条件时重试并结束
- apache-spark - 如何将实体主键映射到 Spark ML 预测?
- c++ - 一起使用 std::thread 和 CUDA
- javascript - 过滤后的数组长度
- javascript - 可以向 angular cli 生成的脚本标签添加跨域属性吗?
- c# - 将刚体添加到对象 Unity3D 时出现问题
- python - 在一次热编码期间/之后,是否可以使用另一列的值而不是二进制标志?
- python - 添加第二个 LSTM 层时遇到问题“输入 0 与层 lstm_2 不兼容:预期 ndim=3,发现 ndim=2”