Implement a strongly Darboux function
Retina 0.8.2, 43 50 bytes

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5
0(.)
$1


Try it online! I/O is as a binary string. Encode a binary number y close to another binary number a as follows:


If a does not contain a ., suffix one.
If a contains an odd number of digits after the ., suffix a 0.
If y is negative then suffix 11 otherwise suffix 10.
For each digit in y, suffix 0 followed by that digit.
If y contains a ., suffix 11 at that point, otherwise suffix it after all the digits in y.


Explanation:

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5


Pair the digits starting at the binary point. If the number is a valid encoding, then decode the last 1x digit pair to a . and the second last to an optional - sign. Digits before that are ignored.

0(.)
$1


This should just leave pairs that begin with 0, so delete the 0s.