As Paul said, something is happening in intermediate query. Format() and FormatNumber() functions return a string, not a true number. Since data shows commas and left alignment, I suspect that is what is happening.
Because both values are strings, this takes precedence with + operator and concatenation is result.
Advise not to format data in queries. Or use conversion function to convert at least one value back to a number as you did with Expr3. But neither value can retain comma introduced by function. That will still force concatenation.
Or your - (-) trick.