このクエリを実行しようとすると:
SELECT POWER(CONVERT(DECIMAL(30,0), 64), 10)
私は受け取ります:
1152921504606847000
それは正しくありません。正しい結果は次のとおりです。
1152921504606846976
どうすれば正しい結果を受け取ることができますか?
このクエリを実行しようとすると:
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, @i=@i+1
end
select @res