我遇到了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