Подтвердить что ты не робот

Наименьший положительный номер float64

Мне нужно найти значение numpy.float64, которое как можно ближе к нулю.

Numpy предлагает несколько констант, которые позволяют сделать что-то подобное:

  • np.finfo(np.float64).eps = 2.2204460492503131e-16
  • np.finfo(np.float64).tiny = 2.2250738585072014e-308

Они оба достаточно малы, но когда я это делаю

>>> x = np.finfo(np.float64).tiny
>>> x / 2
6.9533558078350043e-310

результат еще меньше. При использовании импровизированного бинарного поиска я могу опуститься примерно до 1e-323, прежде чем значение округляется до 0.0.

Есть ли константа для этого в numpy, которую я пропускаю? Альтернативно, есть ли правильный способ сделать это?

4b9b3361

Ответ 1

Используйте np.nextafter.

>>> import numpy as np
>>> np.nextafter(0, 1)
4.9406564584124654e-324
>>> np.nextafter(np.float32(0), np.float32(1))
1.4012985e-45