3

In 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*/

The obtained result is 8.9 for 8.95, but if I put the value as 7.95 the result of the round function is 8.

Why do I get 8.9 instead of 9 for the value 8.95?

4

2 に答える 2

1

浮動小数点(REALおよびFLOAT)データは概算です。DECIMAL(NUMERIC)は正確です:msdn.microsoft.com/en-us/library/ms187912 (v=sql.105).aspx これが、この一見一貫性のない動作の理由である可能性があります。

于 2012-06-18T10:56:22.233 に答える
-1

8.975 の場合、9 しか返されません。代わりにこれを使用する必要がありましたが、 @result=round(@value,1,1)

于 2012-06-18T09:00:34.937 に答える