Python float round error 117.285 round to 117.28 not 117.29

后端 未结 3 1679
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-10 17:47

I am using python 2.7, and the code I have is:

a = 10.5 * 22.34 / 2.0
print \"%.2f\" % a

and the result I expect is 117.29, but it shows 11

3条回答
  •  时光取名叫无心
    2020-12-10 18:20

    If Python is using a 64-bit IEEE-754 binary floating point type, then the exact value it's using will be

    117.284999999999996589394868351519107818603515625
    

    ... and that's obviously lower than the midpoint between 117.28 and 117.29. It's possible that that's what's going on.

    Another option is that Python is using Banker's Rounding.

    If the exact decimal values matter to you, you might want to consider using decimal instead.

提交回复
热议问题