返回信息流(28*28*3*14*28*1*1*25*22*23*1.0)/(63*pow(29,10));结果为-0.000000
(100000*28*28*3*14*28*1*1*25*22*23*1.0)/(63*pow(29,10));结果为-0.000000
这是一条镜像帖。来源:北邮人论坛 / cpp / #97879同步于 2018/7/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【问题】为啥结果总是0??
glucky
2018/7/19镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 Nroskill 的大作中提到: 】
: pow(29,10)妥妥越界
结果是420707233300201.000000,这对于double型,没有越界吧?
【 在 yo1995 的大作中提到: 】
:
: 可以把63*29^10 = 26504555697912663 先算出来
:
求具体错误原因,不懂[ema1]
double型在存整形数时,会分配int型的范围,所以当你乘到...*25已经int型越界。
可以把第一个28改为28.0就行,因为是"真"double型
【 在 rdfx200302 的大作中提到: 】
: double型在存整形数时,会分配int型的范围,所以当你乘到...*25已经int型越界。
: 可以把第一个28改为28.0就行,因为是"真"double型
这样复杂呀,还得考虑这个,那pow(29,10)为啥越界呢?也是这个原因吗
感谢@rdfx200302 ,经验证只有这个原因,机器64位,pow(29,10)是不越界的。。(28*28*3*14*28*1*1*25*22*23*1.0)/(63*pow(29,10));把1.0放前面就好了
忘记pow返回值是double了 看了你们的回复 用28ll也可以
【 在 glucky 的大作中提到: 】
: 结果是420707233300201.000000,这对于double型,没有越界吧?