Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. # Python浮点数的精度问题以及判断两个float数字是否相等
  2.  
  3. Python中浮点数由于精度的原因,它的实际值可能和你想象的不一样。比如
  4.  
  5. ```python3
  6. >>> 1 == 0.9999999
  7. False
  8. >>> 1 == 0.9999999999999999999
  9. True
  10. ```
  11.  
  12. 再比如:
  13.  
  14. ```python3
  15. >>> 1 - 0.2 == 0.8
  16. True
  17. >>> 1 - 0.8 == 0.2
  18. False
  19. >>> 1-0.8
  20. 0.19999999999999996
  21. ```
  22.  
  23. 其它还好,我们可以接受精度的一点点损失,但在测试时得到的值和我们想象的值差那么一丢丢无法“相等”就比较难受了。
  24. 所幸python里预留了忽略这种微小差异的比较方法,那就是 `math` 里的 `isclose` 函数。
  25.  
  26. ```python3
  27. >>> import math
  28.  
  29. >>> math.isclose(1 - 0.8, 0.2)
  30. True
  31. >>> math.isclose(0.3, 1/3)
  32. False
  33. >>> math.isclose(0.3333333333, 1/3)
  34. True
  35. ```
  36.  
  37. 有了这个函数,我们就能够放心地在测试时判断两个float是否相等了。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement