代码之家  ›  专栏  ›  技术社区  ›  mezoid

如何解释数据库中数字的精度和小数位数?

  •  205
  • mezoid  · 技术社区  · 15 年前

    我在数据库中指定了以下列:十进制(5,2)

    这是怎么解释的?

    根据在SQL Server Management Studio中查看的列的属性,我可以看到它的意思是:十进制(数字精度、数字小数位数)。

    准确度和比例在实际意义上是什么?

    这很容易理解为一个有5位数字和两位小数的十进制…即12345.12

    另外,我已经能够从一位同事那里确定正确的答案,但在网上找到答案却困难重重。因此,我希望在StackOverflow中记录问题和答案,以供将来参考。

    3 回复  |  直到 6 年前
        1
  •  342
  •   NinjaBeetle mezoid    12 年前

    数字精度是指数字中存在的最大位数。

    IE 1234567.89的精度为9

    数字刻度是指小数点后的最大位数。

    IE 123456.789的比例为3

    因此,十进制(5,2)的最大允许值为999.99。

        2
  •  71
  •   boumbh    12 年前

    数字的精度是数字的位数。

    小数位数是小数点后的位数。

    在字段定义上设置精度和比例时通常意味着它们表示 最大限度 价值观。

    例如,十进制字段定义为 precision=5 scale=2 允许以下值:

    • 123.45 (P=5,S=2)
    • 12.34 (P=4,S=2)
    • 12345 (P=5,S=0)
    • 123.4 (P=4,S=1)
    • 0 (P=0,S=0)

    不允许使用以下值,否则将导致数据丢失:

    • 12.345 (p=5,s=3)=>可以截断为 12.35 (P=4,S=2)
    • 1234.56 (p=6,s=2)=>可以截断为 1234.6 (P=5,S=1)
    • 123.456 (p=6,s=3)=>可以截断为 123.46 (P=5,S=2)
    • 123450 (P=6,S=0)=>超出范围

    请注意,范围通常由精度定义: |value| < 10^p

        3
  •  21
  •   Air    10 年前

    Precision, Scale, and Length 在SQL Server 2000文档中:

    精度是数字中的位数。小数位数是数字中小数点右边的位数。例如,123.45的精度为5,比例为2。