Общая идея состоит в том, чтобы сначала преобразовать двойное в свое длинное представление (используя, doubleToLongBits
как вы это сделали getRealBinary
), увеличить его на 1, и, наконец, преобразовать новый длинный назад в double, через который он представляет longBitsToDouble
.
EDIT: Java (с 1.5) обеспечивает Math.ulp(double)
, что я предполагаю , что вы можете использовать для вычисления следующего более высокого значения , непосредственно следующим образом: x + Math.ulp(x)
.