Warum die Genauigkeit abnimmt, wenn die Summe mit einer anderen Zahl multipliziert wird

Ich bin auf folgenden Fehler (oder folgende Funktion) in SQL Server gestoßen.

Wenn ich benutzeSUM (*column*) wohercolumn hat einnumeric(18, 8) Geben Sie ein und multiplizieren Sie es mit einer beliebigen anderen Zahl (Ganzzahl oder Dezimalzahl), auf die sich die Ergebnisgenauigkeit reduziertnumeric(18, 6).

Hier ist das zu demonstrierende Beispielskript.

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

Das Ergebnis der zweiten SELECT-Abfrage

0.000000    0.00000006  -0.00000006 0.000000

Wie Sie dann sehen können, multipliziere ich SUM, das Ergebnis ist 0.000000

Kann jemand das seltsame Verhalten erklären?

UPD. Ich habe diese Abfrage in SQL Management Studio unter SQL Server 2000, 2005 und 2008 ausgeführt.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage