Python 3 浮动问题?

Python 3 float problems?

我试图在 python 3 中进行以下计算:

https://i.stack.imgur.com/f5y7z.png

添加:

https://i.stack.imgur.com/Txoya.png

应该 return 0(图像是用 wolframalpha 制作的)。

当我尝试在 python 中进行相同的计算时:

pow((2*3*5),28)-29*math.floor(pow((2*3*5),28)/29)-1

它 returns 4303955653455607115022335.

各部分的值为:

228767924549610000000000000000000000000000正确。

-228767924549609995696044346544392884977665 不正确。

我该如何解决这个问题?

您正在使用精度有限的浮点除法 /,因此您的大结果会四舍五入。

相反,您可以使用整数、底除法 // 得到您想要的结果,它具有无限精度的整数结果:

import math
pow((2*3*5),28)-29*(pow((2*3*5),28)//29)-1
# 0