【发布时间】:2021-09-06 00:28:30
【问题描述】:
当前我想计算a=0.5**5000 的值。我知道a 的值很小,但我需要用a 来乘以b,其中b = 5000! 是一个很大的值。
但是当我计算a=0.5^5000的值时,结果为0。有没有人有解决这个问题的好方法?谢谢!
【问题讨论】:
-
你的意思是
a = 0.5 * 5000?? -
对于
.5 ** 5000,它可能会返回0.0,因为python浮点数无法显示该精度(该数字太接近于零,python无法将其与0区分开来) .在.5 ** 1074中使用纯 python 可以获得的最低值 -
你可以算出 2 的最大幂除以 5000 是多少!然后以封闭形式计算出乘以 0.5**5000 后剩下的 2 的幂。 justquant.com/numbertheory/…。由于这很可能是一个练习,所以也许关键是想办法在没有纯粹暴力的情况下计算答案。
-
您需要
n!/(2**n),还是将那个乘以另一个数字?可能有更好的方法来计算它。例如,n choose k是n!/((n-k)!*k!),但没有人这样计算;你用((n-1) choose k) + ((n-1) choose (k-1))递归计算它。 -
您能说明一下为什么需要这样做吗?您肯定对 5000 的 fixed 值不感兴趣! * 0.5^5000 但一些参数化的公式可以计算一些实用的东西?
标签: python python-3.x numeric largenumber