Discuss / Python / 我想问一下这浮点数计算的问题

我想问一下这浮点数计算的问题

Topic source

Mumei

#1 Created at ... [Delete] [Delete and Lock User]

#1.2.2 float

e=1e1

f=5.222e3

print('e * f =',e*f)

e=1e2

f=5.222e2

print('e * f =',e*f) 

在我的VS code里输出结果分别是

e * f = 52220.0

e * f = 52220.00000000001

为啥第二个后面会有个0.00___1啊?

Shrimp

#2 Created at ... [Delete] [Delete and Lock User]

对,我觉得就是浮点数计算的问题,应该是浮点数在计算机中是以二进制保存的,有些数是不精确的,比如0.1转为二进制就是无限循环小数,Python是以64位精度类保存浮点数的,多余的位会被截掉,所以你看到0.1但在电脑中实际保存的已经不是精确的0.1,我觉得是这个原因

Mumei

#3 Created at ... [Delete] [Delete and Lock User]

谢谢,尽管我Fortran,Python,Matlab里都提到或者遇到二进制保存的浮点数可能会出现这种问题,可是当真的出现的时候又感觉看着很不舒服。


  • 1

Reply