What is the best way to compare floats for almost-equality in Python?

后端 未结 15 1629
旧时难觅i
旧时难觅i 2020-11-21 05:07

It\'s well known that comparing floats for equality is a little fiddly due to rounding and precision issues.

For example: https://randomascii.wordpress.com/2012/02/2

15条回答
  •  星月不相逢
    2020-11-21 06:10

    To compare up to a given decimal without atol/rtol:

    def almost_equal(a, b, decimal=6):
        return '{0:.{1}f}'.format(a, decimal) == '{0:.{1}f}'.format(b, decimal)
    
    print(almost_equal(0.0, 0.0001, decimal=5)) # False
    print(almost_equal(0.0, 0.0001, decimal=4)) # True 
    

提交回复
热议问题