I understand how and why this works, but I do think this is inconsistent with other languages. Quick tests when I wrote this in Python and PowerShell show the answer as 10, not .1.
This is either an implementation bug or a design flaw, IMHO, and the working here should conform to what other languages do.
Note that this works as expected.
DECLARE @a NUMERIC(10,2) = -100.0
, @b NUMERIC(10,2) = -100.0,
@c NUMERIC(10,2) = 10.0
Since we don't often write explicit unary minus signs, maybe this doesn't matter, but it could. If you change this to set all variables to positive and include the minus in the SELECT, you get 0.1
I wrote this question so that you would think about this and understand where math in SQL could be problematic.