Die Frage ist relativ einfach. Ich muss 3 Spalten berechnen, in denen die mittleren Ergebnisse große Dezimalstellen sind, und ich habe schon früh ein Problem damit, dass SQL Server die Dezimalstellen unabhängig von der Umwandlung / Konvertierung im Grunde rundet.
Nehmen wir zum Beispiel eine einfache Unterteilung als 1234/1233 vor. Ein Taschenrechner erzeugt 1.00081103000811. Wenn ich dies auf SQL Server mache, erhalten wir Folgendes:
-- Result: rounded at 1.000811000... with trailing zeroes up until the 37 precision
SELECT CAST(CAST(1234 AS DEC(38,34))/CAST(1233 AS DEC(38,34)) AS DEC(38,37))
-- Result: rounded at 1.000811
SELECT CONVERT(DECIMAL(38,32), 1234)/CONVERT(DECIMAL(38,32),1233)
-- Correct result at 1,00081103000811
-- But this requires the zeroes to be put in manually when you don't
-- even know the precision of the end result
SELECT 1234.0/1233.00000000000000
Warum erfolgt diese automatische Rundung? Und was ist der beste Weg, um wahnsinnig lange Dezimalwerte zu berechnen, wenn Sie nicht sicher sind, wie groß eine Zahl (der Int- oder Dec-Teil) sein wird, da die Tabelle verschiedene Werte enthalten kann?
Vielen Dank!