Питання відносно просте. Мені потрібно обчислити 3 стовпці, де середні результати - це величезні десяткові знаки, і я зіткнувся з проблемою на ранніх термінах із сервером SQL Server, в основному округленням десяткових знаків незалежно від будь-якого відтворення / перетворення.
Наприклад, зробимо простий поділ як 1234/1233. Калькулятор видасть 100081103000811. Але коли я роблю це на 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), оскільки таблиця може містити різні різні значення?
Спасибі!