Ищу разъяснения для math.isclose () - PullRequest
0 голосов
/ 06 мая 2019

Я написал простой код Python для понимания math.isclose(). Почему status2 ниже выдает False, я ожидаю True здесь.

Основываясь на чтении: если ошибок не возникает, результат будет:

abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)

Итак, мой код ниже на status2 должен выглядеть так (как я думал):

    1.00-0.99 <= max (1x10e-2 x 1.00, 0.0)
     0.01 <= max (0.01, 0)
          <= 0.01   ---->True  (but program sesult gives a 'False', why?)`

Ниже мой код

#!/usr/bin/env python3
import math

rel_tole = 1e-02
print ('rel_tole={0}'.format(rel_tole))

a= 1.00
b= 1.01
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status={3}'.format(a,b,rel_tole,status))


a= 1.00
b= 0.99
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)

print ('a={0},b={1},rel_tole={2}, status2={3}'.format(a,b,rel_tole,status))

print ('############################################')
rel_tole = 1e-01
print ('rel_tole={0}'.format(rel_tole))

a= 1.00
b= 1.01
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status3={3}'.format(a,b,rel_tole,status))


a= 1.00
b= 0.99
status= math.isclose(a,b,rel_tol=rel_tole,abs_tol=0.0)
print ('a={0},b={1},rel_tole={2}, status4={3}'.format(a,b,rel_tole,status))

Результат:

rel_tole=0.01
a=1.0,b=1.01,rel_tole=0.01, status=True
a=1.0,b=0.99,rel_tole=0.01, status2=False
############################################
rel_tole=0.1
a=1.0,b=1.01,rel_tole=0.1, status3=True
a=1.0,b=0.99,rel_tole=0.1, status4=True

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...