4
我有以下代码:精度,小数位数总和,除以..截断
SELECT -701385.10 -- -701385.10
SELECT SUM(-701385.10) -- -701385.10
SELECT -701385.10/2889991754.89 -- -0.000242694498630
SELECT SUM(-701385.10)/2889991754.89 -- -0.000242
在过去SELECT
结果被截断为6位小数。我已阅读了Precision, Scale, and Length文章,除非我的工作是错误的,否则我无法理解截断发生的原因。类型的表达SUM(-701385.10)
的应DECIMAL(38,2)
- 见SUM - 所以从分割所得的类型应具有:
精度:
- P1 - S1 + S2 + MAX(6中,S1 + P2 + 1 )
- 38 - 2 + 2 +最大(6,2 + 10 + 1)
- 38 - 最大(6,13-)
- 38 - 13
规模:
- MAX(6中,S1 + P2 + 1)
- MAX(6,2 + 10 + 1)
- 最大值(6,13)
那么为什么小数位被截断?
[T-SQL十进制分割精度](可能重复的HTTP ://stackoverflow.com/questions/423925/t-sql-decimal-division-accuracy) – gbn