import numpy as np

arr = np.array([0.23, 2.32, 4.04, 5.02, 6.84, 10.12, 10.34, 11.93,12.44])

def binary_search(arr, val):
    i = np.searchsorted(arr, val)

    if i in {len(arr), len(arr) - 1}:
        return i - 1
    elif np.isclose(arr[i], val):
        return i

    return i if abs(arr[i] - val) <= abs(arr[i + 1] - val) else i + 1

for case in [12.43, 0.5]:
    print(binary_search(arr, case))
    print(arr[binary_search(arr, case)])