相关疑难解决方法(0)

为什么在将和与其他数相乘时精度会下降

我在SQL Server中遇到过以下错误(或功能).

当我使用SUM (*column*)where column有一个numeric(18, 8)类型并将它乘以任何其他数字(整数或十进制)时,结果精度将减少到numeric(18, 6).

这是演示的示例脚本.

CREATE TABLE #temp (Qnty numeric(18,8))

INSERT INTO #temp (Qnty) VALUES (0.00000001)
INSERT INTO #temp (Qnty) VALUES (0.00000002)
INSERT INTO #temp (Qnty) VALUES (0.00000003)

SELECT Qnty, 1*Qnty
FROM #temp

SELECT (-1)*SUM(Qnty), SUM(Qnty), -SUM(Qnty), SUM(Qnty) * CAST(2.234 as numeric(18,8))
FROM #temp

DROP TABLE #temp
Run Code Online (Sandbox Code Playgroud)

第二个SELECT查询的结果

0.000000    0.00000006  -0.00000006 0.000000
Run Code Online (Sandbox Code Playgroud)

如您所见,然后我乘以SUM,结果为0.000000

谁有人能解释这种奇怪的行为?

UPD.我在SQL Server Studio 2000,2005和2008 SQL Server上执行了此查询.

sql-server sql-server-2005 sql-server-2008

14
推荐指数
1
解决办法
9955
查看次数