2012-10-19 40 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