Как часть unit test, мне нужно проверить некоторые граничные условия. Один метод принимает аргумент System.Double
.
Есть ли способ получить следующее минимальное двойное значение? (т.е. уменьшение мантиссы на 1 единицу)?
Я рассматривал использование Double.Epsilon
, но это ненадежно, так как это только наименьшая дельта от нуля и поэтому не работает для больших значений (т.е. 9999999999 - Double.Epsilon == 9999999999
).
Итак, каков алгоритм или код, необходимые для:
NextSmallest(Double d) < d
... всегда истинно.