我有以下代码:
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 - 因此,该部门产生的类型应具有:
精确度:
规模:
那么为什么小数位被截断?
答案 0 :(得分:4)
你的工作是错的
Precision: p1 - s1 + s2 + max(6, s1 + p2 + 1)
Scale: max(6, s1 + p2 + 1)
给出
Precision: 38 - 2 + 2 + max(6, 2 + 12 + 1) = 53
Scale: max(6, 2 + 12 + 1) = 15
哪个大于38,因此您将截断as covered here