在C数据类型中保存(2^52)个数字

在C数据类型中保存(2^52)个数字,c,data-structures,C,Data Structures,我正在用c做一个项目,在做一些计算时遇到了一个问题。。实际上,我想在任何数据类型中存储一个大数字2^52 int helper = TwoOf(26);//52 over 2 unsigned long long help = helper * helper; 函数Twoofx->计算x^2 我使用long long存储2^52,但调试器显示它有一个零值 有人能帮忙吗?如果您不需要单位数精度,并且对大量有效数字感到满意,则使用双精度无符号长字符不足以存储2^52的结果。而是使用所需大小的in

我正在用c做一个项目,在做一些计算时遇到了一个问题。。实际上,我想在任何数据类型中存储一个大数字2^52

int helper = TwoOf(26);//52 over 2

unsigned long long help = helper * helper;
函数Twoofx->计算x^2 我使用long long存储2^52,但调试器显示它有一个零值


有人能帮忙吗?

如果您不需要单位数精度,并且对大量有效数字感到满意,则使用双精度

无符号长字符不足以存储2^52的结果。而是使用所需大小的int数组来堆栈溢出。你能提供一份详细的报告吗?这可能有助于你的问题被广泛接受,也有助于其他人帮助你。@achal请根据8字节(64位)的无符号长字符的可能大小进行详细说明。考虑使用扩展空间和格式化特征来回答。请解释你的2 ^ 52的含义,通常被解释为2,相对于大多数读者来说,52的幂大于52,这可能是指一个非常不同的数学构造/表达式。我希望4乘2等于6,因为那里有点生疏,而2乘4的幂等于16@Yunnosch是52/2。。。2^52/2是2^52的正平方根……有趣的是,一个IEEE754 double可以精确地存储2^52。在第53次电源后开始出现故障。有时这是一个好主意,尤其是当您的编译器没有长类型和快速浮点时+1.