Pytanie jest stosunkowo proste. Muszę obliczyć 3 kolumny, w których średnie wyniki są ogromnymi miejscami po przecinku, i na początku mam problem z SQL Server, który zasadniczo zaokrągla liczby dziesiętne, niezależnie od rzutowania / konwersji.
Na przykład zróbmy prosty podział jako 1234/1233. Kalkulator wygeneruje 1 00081103000811. Ale kiedy robię to na SQL Server, otrzymujemy:
-- 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
Dlaczego występuje to automatyczne zaokrąglanie? A jaki jest najlepszy sposób obliczania niesamowicie długich wartości dziesiętnych, gdy nie możesz być pewien, jak duża będzie liczba (część int lub dec), ponieważ tabela może zawierać różne różne wartości?
Dzięki!