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
我试图在 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