當2個十進制數(30,10)在Sql Server 05中分開時,最後2位小數似乎會丟失(甚至不會舍入,只是截斷)。Sql Server小數點(30,10)丟失最後2位小數
例如:
Declare @x decimal(30,10)
Declare @y decimal(30,10)
Declare @z decimal(30,10)
select @x = 2.1277164747
select @y = 4.8553794574
Select @z = @y/@x
select @z
結果:2.28196731
但是,如果被劃分2號被轉換爲float,似乎工作:
....
Select @z = cast(@y as float)/cast(@x as float)
select @z
結果:2.28196731
爲什麼Sql會這樣做?在Sql中沒有失去精度的情況下,小數點除法的正確方法是什麼?
這個問題問得好。更奇怪的是,將聲明更改爲(** 38 **,10)實際上使其更糟糕,而將它們更改爲(** 20 **,10)實際上似乎解決了這一問題。沒有意義... – RBarryYoung 2009-09-21 17:08:10