跨越一個有趣的就來了:隱式轉換和舍入
declare @test as int
set @test = 47
select @test * 4.333
回報203.651
declare @test as int
set @test = 47
declare @out as int
set @out = (select @test * 4.333)
select @out
收益203
declare @test as int
set @test = 47
declare @out as int
set @out = round((select @test * 4.333),0)
select @out
收益204
現在我知道爲什麼它這樣做。因爲有一個從小數到int的隱式轉換,所以小數位需要切掉(因此爲203),而如果我在隱式轉換之前舍入,我得到204.
我的問題是爲什麼當SQL Server執行一個隱含的轉換是不是也是四捨五入?我知道如果我有一個很大的數字,而且它需要存儲在一個小地方,我會做的第一件事就是圍繞它,以儘可能接近原始數字。
這對我來說似乎並不直觀。
出色答卷,採取+1 – 2010-12-15 09:19:07