Чтобы повысить скорость моего кода на Python, я использую библиотеку njit от numba. На число 94906267, которое я использую в своих расчетах, я получаю неверный ответ. При этом, если я не использую njit, мой код выдает правильный ответ. Вот два примера.
from numba import njit
@njit
def main_with_njit():
a = 94906267
print(f'main_with_njit: a**2 = {a ** 2}') # -> a**2 = 9007199515875288
# the type is int64
main_with_njit()
def main_without_njit():
a = 94906267
print(f'main_without_njit: a**2 = {a ** 2}') # -> a**2 = 9007199515875289
# the type is
main_without_njit()
Как я могу использовать njit, не получив неправильного ответа?
Я использую Python 3.11.3 с PyCharm 2023.1.2 (Community Edition) в Windows, 64-разрядная версия numba 0.61.0.
Я могу воспроизвести первоначально описанную проблему автор @Roshan N с использованием библиотеки math.
import math
print(math.pow(94906267, 2)) # -> 9007199515875288.0
Подробнее здесь: https://stackoverflow.com/questions/794 ... -in-python