如果我试图执行这个查询: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)上漂浮的定义(或可被转化值以浮动),而不是十进制数 - 所以你必须接受它将用浮点数进行计算,而不是小数。 –