2012-10-19 39 views
0

如果我試圖執行這個查詢:SQL冪函數不正確的高數

SELECT POWER(CONVERT(DECIMAL(30,0), 64), 10) 

我收到:

1152921504606847000 

這是不正確的。正確的結果是:

1152921504606846976 

如何才能收到正確的結果?

+1

['POWER'](http://msdn.microsoft.com/en-us/library/ms174276.aspx)上漂浮的定義(或可被轉化值以浮動),而不是十進制數 - 所以你必須接受它將用浮點數進行計算,而不是小數。 –

回答

2
select cast(power(convert(float(30), 64), 10) as bigint) 
0

如果你想正確的結果,你可以手動計算。

declare @res bigint, @i int 
select @res = 64, @i = 1 

while @i<10 
begin 
    select @res = @res * 64, @[email protected]+1  
end 
select @res