In [1]:
import numpy as np

In [2]:
print(0.1 + 0.1 + 0.1)


0.30000000000000004

In [3]:
a = np.array([0.3, 0.1 + 0.1 + 0.1])
print(a)


[0.3 0.3]

In [4]:
b = np.array([0.3, 0.3])
print(b)


[0.3 0.3]

In [5]:
print(a == b)


[ True False]

In [6]:
np.set_printoptions(precision=18)

In [7]:
print(a)


[0.3                 0.30000000000000004]

In [8]:
print(np.isclose(a, b))


[ True  True]

In [9]:
print(np.isclose(a, 0.3))


[ True  True]

In [10]:
print(np.isclose(0.1 + 0.1 + 0.1, 0.3))


True

In [11]:
print(np.isclose(100, 101))


False

In [12]:
print(np.isclose(100, 101, rtol=0, atol=1))


True

In [13]:
print(np.isclose(np.nan, np.nan))


False

In [14]:
print(np.isclose(np.nan, np.nan, equal_nan=True))


True

In [15]:
print(np.isclose(np.nan, 100, equal_nan=True))


False

In [16]:
a_nan = np.array([np.nan, 1, 2])
print(a_nan)


[nan  1.  2.]

In [17]:
b_nan = np.array([np.nan, np.nan, 2])
print(b_nan)


[nan nan  2.]

In [18]:
print(np.isclose(a_nan, b_nan))


[False False  True]

In [19]:
print(np.isclose(a_nan, b_nan, equal_nan=True))


[ True False  True]