Pertanyaannya relatif sederhana. Saya perlu menghitung 3 kolom di mana hasil pertengahan adalah desimal besar, dan saya mengalami masalah di awal dengan SQL Server pada dasarnya membulatkan desimal terlepas dari pemain / konversi.
Sebagai contoh, mari kita lakukan pembagian sederhana sebagai 1234/1233. Kalkulator akan menghasilkan 1.00081103000811. Tetapi ketika saya melakukan ini di SQL Server, kami mendapatkan yang berikut:
-- 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
Mengapa pembulatan otomatis ini terjadi? Dan apa cara terbaik untuk menghitung nilai desimal yang sangat panjang ketika Anda tidak dapat memastikan seberapa besar angka (bagian int atau dec) akan, karena tabel dapat berisi berbagai nilai yang berbeda?
Terima kasih!