2244| 4
|
[已解决]为什么代码中pow函数用temp替换就可以 |
2鱼币
最佳答案这是强制格式转换惹的祸
首先你要知道pow函数的返回值是double类型
你直接写 sum=sum+pow(2,i); 计算的时候会先把右边的都转为double类型进行计算,然后再讲计算结果转为unsigned long long 类型。这样就导致在类型转换的时候有精度损失,最后得到的实际上应该是2^64-1,但是由于精度损失问题,最后数据变成了2^64,而 unsigned long long 类型的最大值是 2^64-1,这个值溢出了,就变成了0。
若用temp中转,temp不会这么大,要少 ...
| ||
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
|
||
发表于 2020-10-21 10:15:37
|
显示全部楼层
本楼为最佳答案
评分 | ||
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
|
||
| ||
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
|
||
发表于 2020-10-22 19:19:38
|
显示全部楼层
| ||
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
|
||
小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2025-1-12 23:05
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.