La question est relativement simple. J'ai besoin de calculer 3 colonnes où les résultats moyens sont d'énormes décimales, et je rencontre un problème au début avec SQL Server arrondissant essentiellement les décimales indépendamment de toute conversion / conversion.
Par exemple, faisons une division simple comme 1234/1233. Une calculatrice produira 1 00081103000811. Mais quand je fais cela sur SQL Server, nous obtenons ce qui suit:
-- 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
Pourquoi cet arrondi automatique se produit-il? Et quelle est la meilleure façon de calculer des valeurs décimales incroyablement longues lorsque vous ne pouvez pas être sûr de la taille d'un nombre (la partie int ou dec), car la table peut contenir différentes valeurs différentes?
Merci!