- they are binary rather than decimal, so rounding behavior doesn’t match what humans expect
- some floating point operations have rounding/error accumulation
You can multiply and divide a float by 2 all day long and every result will be exact, with no error accumulation. However, adding floats together is a different story :-)
That said, decimal types are still much preferable for anything that needs to be “exact” for human usage. It’s very easy to make a mistake with floats, even if they could support your use case.