Consigue el siguiente número doble más pequeño

Como parte de una prueba de unidad, necesito probar algunas condiciones de contorno. Un método acepta unSystem.Double argumento.

¿Hay alguna manera de obtener elsiguiente más pequeño doble valor? (es decir, disminuir la mantisa en un valor unitario)?

Consideré usarDouble.Epsilon pero esto no es confiable ya que solo es el delta más pequeño desde cero, y por lo tanto no funciona para valores más grandes (es decir,9999999999 - Double.Epsilon == 9999999999).

Entonces, ¿cuál es el algoritmo o código necesario para que:

NextSmallest(Double d) < d

... siempre es cierto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta