Veja o próximo menor número duplo

Como parte de um teste de unidade, preciso testar algumas condições de contorno. Um método aceita umSystem.Double argumento.

Existe uma maneira de obter opróximo menor valor duplo? (isto é, diminuir a mantissa em 1 valor unitário)?

Eu considerei usarDouble.Epsilon mas isso não é confiável, já que é apenas o menor delta de zero e, portanto, não funciona para valores maiores (por exemplo,9999999999 - Double.Epsilon == 9999999999).

Então, qual é o algoritmo ou código necessário para que:

NextSmallest(Double d) < d

... é sempre verdade.

questionAnswers(2)

yourAnswerToTheQuestion