我遇到了SQL Server 中的EXP
内置函数,与 SQL Server 2005 相比,该函数在 SQL Server 2012 环境中返回的值似乎不同。
运行下面的代码在不同的环境中返回不同的结果。我试图找出为什么存在差异以及为什么这个函数的行为从 2005 年到 2012 年不同。
这对于我正在工作的项目非常关键,其中计算中的微小差异可能会产生巨大影响。
DECLARE @dec AS DECIMAL(20,18)
DECLARE @flt AS FLOAT
SELECT @dec = (EXP(0.0267329893588985) - 1)
SELECT @flt = (EXP(0.0267329893588985) - 1)
SELECT @dec AS [Decimal], @flt AS [Float]
结果 SQL Server 2012:
Decimal Float
---------------------------------------------
0.027093521247497640 0.0270935212474976
结果 SQL Server 2005
Decimal Float
---------------------------------------------
0.027093521247497860 0.0270935212474979