Dlaczego precyzja maleje, gdy mnożymy sumę do innej liczby

Spotkałem się z następującym błędem (lub funkcją) w SQL Server.

Kiedy używamSUM (*column*) gdziecolumn manumeric(18, 8) wpisz i pomnóż go do dowolnej innej liczby (liczby całkowitej lub dziesiętnej), do której zmniejsza się precyzja wynikunumeric(18, 6).

Oto przykładowy skrypt do zademonstrowania.

CREATE TABLE #temp (Qnty numeric(18,8))

INSERT INTO #temp (Qnty) VALUES (0.00000001)
INSERT INTO #temp (Qnty) VALUES (0.00000002)
INSERT INTO #temp (Qnty) VALUES (0.00000003)

SELECT Qnty, 1*Qnty
FROM #temp

SELECT (-1)*SUM(Qnty), SUM(Qnty), -SUM(Qnty), SUM(Qnty) * CAST(2.234 as numeric(18,8))
FROM #temp

DROP TABLE #temp

Wynik drugiego zapytania SELECT

0.000000    0.00000006  -0.00000006 0.000000

Jak widać, mnożę SUM wynik wynosi 0,000000

Czy ktoś mógłby wyjaśnić dziwne zachowanie?

UPD. Wykonałem to zapytanie w SQL Management Studio na 2000, 2005 i 2008 SQL Server.

questionAnswers(3)

yourAnswerToTheQuestion