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

  • @ 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