276

データベースで次の列が指定されています: decimal(5,2)

これをどのように解釈しますか?

SQL Server Management studio で表示された列のプロパティによると、それが 10 進数 (数値精度、数値スケール) を意味していることがわかります。

精度とスケールは、実際には何を意味するのでしょうか?

これを 5 桁と小数点以下 2 桁の 10 進数として解釈するのは簡単です...つまり 12345.12

PS 同僚から正しい答えを見つけることができましたが、オンラインで答えを見つけるのは非常に困難でした。そのため、今後の参考のために、質問と回答をここに記載し、stackoverflow に記載したいと思います。

4

4 に答える 4

457

Numeric precision refers to the maximum number of digits that are present in the number.

ie 1234567.89 has a precision of 9

Numeric scale refers to the maximum number of decimal places

ie 123456.789 has a scale of 3

Thus the maximum allowed value for decimal(5,2) is 999.99

于 2010-03-04T05:54:13.770 に答える
107

数値の精度は桁数です。

数値の目盛りは、小数点以下の桁数です。

フィールド定義で精度とスケールを設定するときに一般的に暗示されるのは、それらが最大値を表すということです。

precision=5たとえば、で定義された10進フィールド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.34512.35(p = 5、s = 3)=>は(p = 4、s = 2)に切り捨てられる可能性があります
  • 1234.561234.6(p = 6、s = 2)=>は(p = 5、s = 1)に切り捨てられる可能性があります
  • 123.456123.46(p = 6、s = 3)=>は(p = 5、s = 2)に切り捨てられる可能性があります
  • 123450(p = 6、s = 0)=>範囲外

範囲は一般的に精度によって定義されることに注意してください:|value| < 10^p..。

于 2013-03-20T10:14:32.543 に答える
36

SQL Server 2000 ドキュメントの精度、スケール、および長さは次のとおりです。

精度は、数値の桁数です。スケールは、数値の小数点以下の桁数です。たとえば、数値 123.45 の精度は 5 で、位取りは 2 です。

于 2012-11-20T08:25:17.920 に答える