math.nextafter(x, y)
La función math.nextafter devuelve el valor real más próximo al número x en la dirección del número y. Es decir, esta función devuelve el resultado de añadir al argumento x el menor incremento posible en Python hacia el número y.
Si x es igual a y, la función devuelve x.
El resultado de la función math.nextafter es un número real.
El resultado de añadir al número 3.4 el menor incremento posible en Python de forma que el resultado sea un valor más próximo a 8 es:
math.nextafter(3.4, 8)
3.4000000000000004
Es posible confirmar que éste es el número más próximo a 3.4 representable en Python. Por ejemplo, el número 3.4000000000000003 se redondea al resultado obtenido:
print(3.4000000000000003)
3.4000000000000004
Si queremos obtener el número real más próximo a uno dado hacia el infinito positivo, podemos conseguirlo con el siguiente código:
math.nextafter(3.4, math.inf)
3.4000000000000004
Si deseamos que el resultado se acerque al infinito negativo:
math.nextafter(3.4, -math.inf)
3.3999999999999995
En estos ejemplos obtenemos el número real más próximo a uno dado hacia el cero:
math.nextafter(3.4, 0)
3.3999999999999995
math.nextafter(-3.4, 0)
-3.3999999999999995
En este otro ejemplo obtenemos el número real más próximo a uno dado alejándonos del cero con independencia del signo del número real del que partimos. Para ello copiamos el signo del número al valor infinito representado por math.inf con la función math.copysign:
a = 3.4
math.nextafter(a, math.copysign(math.inf, a))
3.4000000000000004
a = -3.4
math.nextafter(a, math.copysign(math.inf, a))
-3.4000000000000004