下面的程序如何在C语言中打印2^1023的精确值而不会有任何精度损失?

#include <stdio.h>
#include<math.h>
int main()
{
// Printing the value of 2 ^1023
printf("%.0f",pow(2,1023));

return 0;
}

输出:8988465674311579538646525953945123668089884894711532863671504057886633790275048156635423866120376801056939935696678829394884407208311246423715319737062188394671243274263511098006230470597265414760425028844753411712314407655527041361858167525532931499736229693985815276164812112068608

最佳答案

二次幂只需要一点精度。尾数将刚好1(相当于0的幂的2)。
想想看:这是因为二进制表示的基础是2在你作为一个人习惯的基数中,任何10的幂只需要一个数字,例如10
1000000 = 1 * 10^6的指数用二进制表示法(1023)表示有10位,因此只要实现上的11 1111 1111表示法至少有11位(符号需要再表示一位)表示指数,就可以准确地表示这个数字。

关于c - C的pow()函数如何输出2 ^ 1023的精确值而没有任何精度损失?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45522643/

10-12 18:05