SQL Server 2008 R2 と SQL Server 2012 を使用して次のことを試していますが、両方で同じ結果が得られます。
次のステートメントを書くとします。
select round(4.005, 2)
期待される結果が得られます: 4.01
ただし、次のステートメントを書く場合:
declare @result float
select @result = 4.005
select round(@result, 2)
予期しない結果が得られました: 4
しかし、前のステートメントでfloatをrealに置き換えると、次のようになります。
declare @result real
select @result = 4.005
select round(@result, 2)
期待どおりの結果が得られます。
なぜこれが起こっているのか誰にも教えてもらえますか?