如果我試圖執行這個查詢:SQL冪函數不正確的高數
SELECT POWER(CONVERT(DECIMAL(30,0), 64), 10)
我收到:
1152921504606847000
這是不正確的。正確的結果是:
1152921504606846976
如何才能收到正確的結果?
如果我試圖執行這個查詢:SQL冪函數不正確的高數
SELECT POWER(CONVERT(DECIMAL(30,0), 64), 10)
我收到:
1152921504606847000
這是不正確的。正確的結果是:
1152921504606846976
如何才能收到正確的結果?
這是由於計算的精度。你可以有非常大的數字,但精度將被關閉,因爲你只需要固定的比特量來存儲你的價值觀......
select cast(power(convert(float(30), 64), 10) as bigint)
如果你想正確的結果,你可以手動計算。
即
declare @res bigint, @i int
select @res = 64, @i = 1
while @i<10
begin
select @res = @res * 64, @[email protected]+1
end
select @res
['POWER'](http://msdn.microsoft.com/en-us/library/ms174276.aspx)上漂浮的定義(或可被轉化值以浮動),而不是十進制數 - 所以你必須接受它將用浮點數進行計算,而不是小數。 –