Вопрос относительно прост. Мне нужно вычислить 3 столбца, где средние результаты - огромные десятичные дроби, и я сталкиваюсь с проблемой на ранних этапах, когда SQL Server в основном округляет десятичные числа независимо от каких-либо приведений / преобразований.
Например, давайте сделаем простое деление как 1234/1233. Калькулятор выдаст 1 00081103000811. Но когда я делаю это на SQL Server, мы получаем следующее:
-- 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
Почему происходит автоматическое округление? И как лучше всего рассчитать безумно длинные десятичные значения, когда вы не можете быть уверены, насколько большим будет число (часть int или dec), поскольку таблица может содержать различные значения?
Спасибо!