Câu hỏi tương đối đơn giản. Tôi cần tính toán 3 cột trong đó kết quả giữa là số thập phân rất lớn và tôi đang gặp vấn đề sớm với SQL Server về cơ bản làm tròn số thập phân bất kể mọi chuyển đổi / chuyển đổi.
Ví dụ: hãy thực hiện một phép chia đơn giản là 1234/1233. Một máy tính sẽ tạo ra 1.00081103000811. Nhưng khi tôi làm điều này trên SQL Server, chúng tôi nhận được như sau:
-- 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
Tại sao làm tròn tự động này xảy ra? Và cách tốt nhất để tính các giá trị thập phân cực kỳ dài khi bạn không thể chắc chắn một số lớn (phần int hay phần dec) sẽ như thế nào, vì bảng có thể chứa các giá trị khác nhau?
Cảm ơn!