spa*_*rks 5 sql sql-server rounding
在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
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我不建议将float数据类型用于确切的decimal值.
在这种特殊情况下,您可以将@foo变量转换为decimal:
SET @bar = ROUND(CAST(@foo as DECIMAL(10,2)), 1) --> 5.6
Run Code Online (Sandbox Code Playgroud)