Función Python math.nextafter()

Python math 模块Módulo Python math


En los cálculos de punto flotante, comprenderlos números de punto flotante adyacentesLa relación entre ellos es muy importante. Los números de punto flotante en las computadoras son discretos, y hay un intervalo mínimo entre dos números de punto flotante adyacentes.

math.nextafter()Es una función introducida en Python 3.9, utilizada para devolver el valor después de avanzar un número especificado de pasos de punto flotante desde x hacia y.

Significado del término: nextafterSignifica "el siguiente después de".


Sintaxis básica y parámetros

Formato de sintaxis

import math

math.nextafter(x, y[, steps])

Descripción de parámetros

  • x: número de punto flotante inicial
  • y: dirección objetivo
  • steps(opcional): número de pasos, el valor predeterminado es 1

Valor de retorno

Devuelve el número de punto flotante después de avanzar steps pasos desde x en la dirección de y


Ejemplos

Ejemplo 1: Obtener números de punto flotante adyacentes

Ejemplos

import math

next_val = math.nextafter(1.0, math.inf)
print(f"El siguiente número de punto flotante de 1.0: {next_val}")
print(f"Diferencia: {next_val - 1.0}")

prev_val = math.nextafter(1.0, -math.inf)
print(f"\n"El número de punto flotante anterior a 1.0: {prev_val}")
print(f"Diferencia: {1.0 - prev_val}")

Resultado de ejecución:

1.0 的下一个浮点数: 1.0000000000000002
差值: 2.220446049250313e-16
1.0 的前一个浮点数: 0.9999999999999999
差值: 1.1102230246251565e-16

Ejemplo 2: Parámetro steps

Ejemplos

import math

print("Avanzar 10 pasos:", math.nextafter(1.0, math.inf, 10))
print("Número de pasos negativo:", math.nextafter(1.0, -math.inf, -5))

Resultado de ejecución:

前进 10 步: 1.0000000000000007
负数步数: 0.9999999999999996

Ejemplo 3: Valores especiales

Ejemplos

import math

print("Infinito:", math.nextafter(math.inf, 0))
print("Después de 0:", math.nextafter(0.0, 1.0))
print("Cero negativo:", math.nextafter(-0.0, 1.0))

Resultado de ejecución:

无穷大: 1.7976931348623157e+308
0 之后: 5e-324
负零: 5e-324

Ejemplo 4: Calcular ULP

Ejemplos

import math

for x in [1.0, 2.0, 100.0]:
    ulp = math.nextafter(x, math.inf) - x
    print(f"ULP({x}) = {ulp}")

Resultado de ejecución:

ULP(1.0) = 2.220446049250313e-16
ULP(2.0) = 4.440892098500626e-16
ULP(100.0) = 2.8421709430404007e-14

Notas

  • Esta función solo está disponible en Python 3.9+
  • El parámetro steps también es nuevo en Python 3.9
  • Se puede utilizar para comprender las limitaciones de precisión de los números de punto flotante

Python math 模块Módulo Python math

Otras extensiones