Yes, it's a bug. Implementation of this Oracle compatibility function doesn't handle DECFLOAT arguments properly, but you can cast them to a some other numeric types as a workaround.
TO_CHAR(CAST(2E+1 AS NUMERIC(6, 2)), '9999D00')
Approximate numeric literals (with exponent) have DECFLOAT
data type in new versions of H2.