Your test does not prove your boss is wrong. Also, for some applications I've worked with, regression on the level of numerical accuracy is unacceptable, I once worked with assertion based on file hashes (where tolerance made no sense), and I've even seen people use "tolerance" to claim a failing test was passing (I'm unsure if the person was oblivious to this fact, or if it was a deliberate measure to show progress).
So, unless more information is provided, I would side with your boss in this discussion.
Nonetheless, it seems like both of you might have a communication problem, which can be addressed by making sure both of you can answer the following questions:
- How often and how much extra work for you is it to not use a tolerance?
- Can you actually find tolerance values that you know will continue appropriate in the future?
- Wouldn't that be extra work as well?
- Are there other parts of the code where indeed a tolerance isn't simply "unnecessary" but actually "unacceptable"?
When I say "both of you", I mean at least: Can you answer these questions and justify "why" your answer is? Have your boss heard you explaining these questions? Can you tell what would he answer for these questions and what is his reasoning? Can you understand his reasoning?
Often people think someone else "is just wrong", when actually they've failed to understand this someone else. And even if he/she is wrong, unless you understand the person's reasoning, you won't be able to point out actual mistakes ("oh you thought we only worked with double precision? Some tests use an emulated hardware with fixed point precision, so the same code yields different results in different tests") or misconceptions ("Oh, you thought it was easier for me not to not use a tolerance? Actually I'm having more work due to not using it...").
0.1 + 0.2 == 0.3
then using floats is just simply wrong. This is a perfect example of why not use floats when dealing with currencies. On the other hand when you are aware of the floating-point inaccuracy then a test likeround(0.1 + 0.2, decimals: 2) == 0.3
might be better