值为8.95的SQL舍入函数错误

时间:2012-06-18 08:50:29

标签: sql-server-2008 rounding

在SQL Server 2008中:

declare @Value float
declare @result float 

set @Value=7.95
select @result=round(@Value,1)
print @result /*Prints 8*/

set @Value=8.95
select @result=round(@Value,1)
print @result /*Prints 8.9*/

获得的结果是8.9为8.9,但如果我把值设为7.95,则圆函数的结果为8。

为什么我的值8.95会得到8.9而不是9?

2 个答案:

答案 0 :(得分:1)

浮点(REAL和FLOAT)数据是近似值。 DECIMAL(NUMERIC)是准确的:msdn.microsoft.com/en-us/library/ms187912(v=sql.105).aspx 这可能是这种看似不一致的行为的原因。

答案 1 :(得分:-1)

对于8.975,它仅给出9。你应该用这个, @result=round(@value,1,1)