Почему точность уменьшается при умножении суммы на другое число

Я столкнулся со следующей ошибкой (или функцией) в SQL Server.

Когда я используюSUM (*column*) гдеcolumn имеетnumeric(18, 8) введите и умножьте его на любое другое число (целое или десятичное), точность результата уменьшается доnumeric(18, 6).

Вот пример сценария для демонстрации.

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

Результат второго запроса SELECT

0.000000    0.00000006  -0.00000006 0.000000

Как вы можете видеть, тогда я умножаю СУММУ результат 0,000000

Кто-нибудь может объяснить странное поведение?

UPD. Я выполнил этот запрос в SQL Management Studio на SQL Server 2000, 2005 и 2008 гг.

Ответы на вопрос(0)

Ваш ответ на вопрос