【问题标题】:SQL extra precision when calculating, why?SQL 计算时的额外精度,为什么?
【发布时间】:2020-06-03 23:00:07
【问题描述】:

你知道为什么 SQL 在乘法时会增加额外的精度吗?示例:

declare @x decimal(2,1) = 9.9;
Declare @y decimal(3,2) = 9.99;
--precision: p1 + p2 + 1 = 2 + 3 + 1 = 6
--scale:     s1 + s2 = 1 + 2 = 3
declare @rM decimal(5,3) = @x * @y;--this is OK, why is the resulting precision 6 if 5 is OK?

是否存在我不知道将两个值相乘的精度需要 6 的情况?

【问题讨论】:

    标签: sql sql-server-2008 precision


    【解决方案1】:

    SQL Server 有detailed documentation 对各种算术运算的数值精度和小数位数。

    对于乘法,这是:

    e1 * e2    precision:  p1 + p2 + 1    scale:  s1 + s2
    

    我认为这些符合算术规则。小数点右边的小数位数确实是s1 + s2——记住,比例是右边的数字。而且我认为精度可能被夸大了1。 但是,在某些极端情况下,额外的小数位可能会有所帮助。

    当然,对于数值/十进制值,这些值的上限是最大比例和精度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2013-01-02
      • 2011-05-13
      • 1970-01-01
      相关资源
      最近更新 更多