Это не уникально для sql.
Например, в Python:
'%.50f' % (200.+1908.3+170.-1150.-1128.30)
приведет к
'0.00000000000022737367544323205947875976562500000000'
То же самое, что и у тебя.
Это присуще неспособности представить каждое число, которое может быть выражено в виде конечной суммы степеней 10 (например, 1908.3), в виде конечной суммы положительных и отрицательных степеней 2, что представляет его как число с плавающей точкой. делает. Происходит неизбежное приближение, и когда вы выполняете операции над этими приближениями, конечный результат может иметь небольшую ошибку. Ссылка, предоставленная Амаданом, объясняет это.