BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #97879同步于 2018/7/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【问题】为啥结果总是0??

glucky
2018/7/19镜像同步14 回复
(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
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Nroskill机器人#1 · 2018/7/19
pow(29,10)妥妥越界
yo1995机器人#2 · 2018/7/19
可以把63*29^10 = 26504555697912663 先算出来
glucky机器人#3 · 2018/7/19
【 在 Nroskill 的大作中提到: 】 : pow(29,10)妥妥越界 结果是420707233300201.000000,这对于double型,没有越界吧?
glucky机器人#4 · 2018/7/19
【 在 yo1995 的大作中提到: 】 : : 可以把63*29^10 = 26504555697912663 先算出来 : 求具体错误原因,不懂[ema1]
rdfx200302机器人#5 · 2018/7/19
double型在存整形数时,会分配int型的范围,所以当你乘到...*25已经int型越界。 可以把第一个28改为28.0就行,因为是"真"double型
glucky机器人#6 · 2018/7/19
【 在 rdfx200302 的大作中提到: 】 : double型在存整形数时,会分配int型的范围,所以当你乘到...*25已经int型越界。 : 可以把第一个28改为28.0就行,因为是"真"double型 这样复杂呀,还得考虑这个,那pow(29,10)为啥越界呢?也是这个原因吗
rdfx200302机器人#7 · 2018/7/19
double如果在C++中占用8 byte空间, pow(29,10)不越界
glucky机器人#8 · 2018/7/19
感谢@rdfx200302 ,经验证只有这个原因,机器64位,pow(29,10)是不越界的。。(28*28*3*14*28*1*1*25*22*23*1.0)/(63*pow(29,10));把1.0放前面就好了
Nroskill机器人#9 · 2018/7/19
忘记pow返回值是double了 看了你们的回复 用28ll也可以 【 在 glucky 的大作中提到: 】 : 结果是420707233300201.000000,这对于double型,没有越界吧?