Python

Python浮点数运算的不确定尾数

勤劳的小蜜蜂 · 1月14日 · 2019年 · · ·

问题描述

>>> 0.1+0.2
0.30000000000000004
>>> 0.1+0.2==0.3
False

0.1+0.2不等与0.3

问题分析

  • 不是BUG
  • 0.1用二进制表示的时候是无限的小数
  • 计算机中二进制和十进制不存在严格的对等关系
  • Python中取用53位二进制表示小数部分,约10-16,无限接近但不等于

解决方法

round(x,d)

对X四舍五入,d是小数位数

>>> round(0.1+0.2,1)==0.3
True
0 条回应