This can be refuted in one.
if(a = b)
Languages that uses := for assignment, or some other operator, don't have the mental overload of equals being used both for assignment and for equality checks. Typos like the above become not possible.Other languages just don't allow assignment in 'if' statements.
In regards to floating point support, a language could default overload equality checks so that they are configurably fuzzy when comparing floats.
And of course, languages already prevent stupid mistakes. Even the humble C compiler properly arranges the stack for us when exiting a function, putting all return values in the appropriate place based on the platform's ABI and restoring registers that are supposed to be preserved.