It’s not wrong, its called epsilon error. This is a byproduct of how computers work when rounding. All coding languages do this on every computer everywhere. It’s just that you normally don’t see this kind of thing because programmers hide it behind the UI.
If you are really worried about numbers beyond the 10th decimal place.
{%set value = 20.1%}
{% set value2 = value + 0.8 | round(1)%}
{{ "{:f}".format(value2) | float }}
returns
20.9