gpt4 book ai didi

sql-server - 精度、小数位数、求和、除法..截断

转载 作者:行者123 更新时间:2023-12-03 03:05:54 24 4
gpt4 key购买 nike

我有以下代码:

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
  • 25

规模:

  • 最大(6,s1 + p2 + 1)
  • 最大(6, 2 + 10 + 1)
  • 最大(6, 13)
  • 13

那么为什么小数位会被截断呢?

最佳答案

你的工作是错误的

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

关于sql-server - 精度、小数位数、求和、除法..截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8271966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com