5

SQL Server 2005 で、float 変数に格納された値を丸めようとすると、正しくない値が返されます。以下の例では、ROUND 関数の両方の呼び出しで 5.6 が返されるはずです。

DECLARE @foo float;
DECLARE @bar float;
DECLARE @baz float;

SET @foo = 5.55;
SET @bar = ROUND(@foo, 1) --> 5.5
SET @baz = ROUND(5.55, 1) --> 5.6

私は何を間違っていますか?

4

1 に答える 1

6

正確な値 にfloatデータ型を使用することはお勧めしません。decimal

この特定のケースでは、@foo変数を次のように変換できますdecimal

SET @bar = ROUND(CAST(@foo as DECIMAL(10,2)), 1) --> 5.6

すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと

于 2013-07-16T00:33:02.153 に答える