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