如果 y 为负,为什么 x**y%z 不像 pow(x, y, z) 那样工作?

Why doesn't x**y%z work like pow(x, y, z) if y is negative?

我有 x、y 和 z 的这些值:

x = 1402709587326125487755933770599785022011554878478352915458023572822263891029946822919389113025226898265
y = -1653150172609560595889587008271025520100868674290063537844119789327420377094035018771640253912456367085
z = 5223965736281209292468836459168070829492174759961935620654434528517414151878323192140113927287012325803

pow(x,y,z) returns 6996453002252837241098775666312149651703153544682991747419581607713 (就像它需要根据 RSA 分配一样)

x**y%z 应该做同样的事情,但是 returns 0.0 有人可以解释为什么吗?我猜这与负 y 有关。

当你计算时

x ** y % z

您分 两个 步完成:(x ** y) % z。第一步

x ** y

returns 浮点数 远远低于 5.562684646268003E-309(即 double 的最小可能震级 )。所以,x ** y == 0.0,最后,0 % z == 0