- C++
我发现一个有趣的现象
- 2024-8-9 12:48:01 @
printf("%.0f",pow(2,1023));
cout << endl << pow(2,1023);
这两行代码输出的结果不一样
第一行的结果是89884656743115795386465259539451236680898848947115328636715040578866337902750481566354238661203768010560056939935696678829394884407208311246423715319737062188883946712432742638151109800623047059726541476042502884419075341171231440736956555270413618581675255342293149119973622969239858152417678164812112068608
而第二行的结果是 8.98847e+307
且C++无法输出pow(2,1024) 即使是pow(2,1024) - pow(2,1024)也不行(不管减多少都不行) (输出为inf)
但是可以输出 pow(2,1023) + pow(2,1022) + pow(2,1021) ...... + 2 结果我不知道 但是一定比pow(2,1024)小
目前我从pow(2,1023)加到了pow(2,1000) 结果为1.34827e+308
准确值为 179769302771145518910257309594651982761779592280182540218094006720228792101990451883347252390423747864161532603924664182127321516942963765569706994654896549679193089490297710452071234180171489057081941074130823615791675698760521614075145551375283291086287596113389820553405078278049884652210969492418556067840
2 comments
-
谢煜龙 LV 6 @ 2024-8-11 0:03:54
?
-
2024-8-9 13:09:07@
pow(n,x)是double类型 所以用的是printf("%.0f",pow(2,1023))而不是printf("%d",pow(2,1023))
- 1