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.