我遇到了sql server精度問題。SQL Server精確度瘋狂
我有以下疑問:
DECLARE @A numeric(30,10)
DECLARE @B numeric(30,10)
SET @A = 20.225
SET @B = 53.3875
SELECT @A * @B
DECLARE @A1 numeric(30,14)
DECLARE @B1 numeric(30,14)
SET @A1 = 20.225
SET @B1 = 53.3875
SELECT @A1 * @B1
DECLARE @A3 numeric(30,15)
DECLARE @B3 numeric(30,15)
SET @A3 = 20.225
SET @B3 = 53.3875
SELECT @A3 * @B3
DECLARE @A2 numeric(20,15)
DECLARE @B2 numeric(20,15)
SET @A2 = 20.225
SET @B2 = 53.3875
SELECT @A2 * @B2
DECLARE @A4 float
DECLARE @B4 float
SET @A4 = 20.225
SET @B4 = 53.3875
SELECT @A4 * @B4
其中產量分別如下結果:
1079.762188
1079.762188
1079.7621875
1079.762187500000000000000000000
1079.7621875
正確答案是:1079.7621875。
我不明白爲什麼,當類型具有相同的簽名時,他們失去了精度。另外,爲什麼從30,14到30,15修正了精度問題?另外,爲什麼20,15有比30,15更多的小數?
我看了這篇文章http://msdn.microsoft.com/en-us/library/ms190476(SQL.90).aspx,我想我應該是很好的,因爲我的變量具有相同的精度。
任何幫助將不勝感激!
甄子丹以下答案,我瞭解到,在(30,15)的結果是61和被減少到38.但是根據公式我看到它看起來像我的規模應該是-2或什麼的。什麼是公式來確定規模是什麼? – zgirod 2010-11-16 22:33:04