我有两个需要很高精度的数据库字段 - 一列是十进制(36,12),另一列是十进制(36,24)。
当它们相乘时,我期待精度将被保留,但似乎并非如此 - 实际上我的精度会降低。例如,在运行以下SQL时:
SELECT 3.035 * 0.333333333333333333333333 AS Normal
SELECT CAST(3.035 AS DECIMAL(36,12)) * CAST(0.333333333333333333333333 AS DECIMAL(36,24)) AS Cast12
SELECT CAST(3.035 AS DECIMAL(36,24)) * CAST(0.333333333333333333333333 AS DECIMAL(36,24)) AS Cast24
我得到以下结果:
Normal : 1.011666666666666666666665655
Cast12 : 1.011667
Cast24 : 1.0116666666667
我想这是因为乘法操作通常产生“更大”的数字。我显然可以找到解决方法(Cast24“足够好”),但我想了解SQL Server究竟如何确定何时进行舍入以及要保留哪些数字?
答案 0 :(得分:0)