【问题标题】:Getting numeric precision in case of int datatype of SQL Server在 SQL Server 的 int 数据类型的情况下获取数值精度
【发布时间】:2021-05-08 20:01:15
【问题描述】:

我正在从 SQL Server 获取以下列的详细信息:

Size
Precision
Scale

但我注意到,在 int 的情况下,我的精度为 10,但是当我进行一些研究时,我找不到任何与 int 相关的东西,并且 int 数据类型的精度为 10 或在 SQL Server Management 中工作室。

所以我不知道在 int 数据类型的情况下 10 的精度如何。

表格

截图

代码:

String[] columnRestrictions = new String[4];
columnRestrictions[0] = 'MyDb';
columnRestrictions[1] = 'dbo';
columnRestrictions[2] = 'Employee';

using (SqlConnection con = new SqlConnection("MyConnectionString"))
{
    con.Open();
    var columns = con.GetSchema("Columns", columnRestrictions).AsEnumerable()
         .Select
          (
                 t => new 
                 {
                     Name = t[3].ToString(),
                     Datatype = t.Field<string>("DATA_TYPE"),
                     IsNullable = t.Field<string>("is_nullable"),
                     Size = t.Field<Int32?>("character_maximum_length"),
                     NumericPrecision = t.Field<int?>("NUMERIC_PRECISION"),
                     NumericScale = t.Field<Int32?>("NUMERIC_SCALE")
                 }).ToList();

【问题讨论】:

  • 如果您查看int datatype,您会发现它可以存储的最大值需要(最多)10 个十进制数字来表示。因此,如果某事坚持要为 int 提供精确度,那么提供这并不是一个不合理的答案。
  • Precision is the number of digits in a number,32 位 int 的最大位数为 10。(bigint 为 19)
  • @Damien_The_Unbeliever :所以在 int 数据类型的情况下我的输出正确为 10???
  • @TimSchmelter:先生,我想问你一件事,为什么你删除了我这个问题的答案(stackoverflow.com/questions/41062636/…)虽然它是正确的。我正准备将其标记为已接受的答案,但你删除了它

标签: c# .net sql-server linq ado.net


【解决方案1】:

精度是指一个数字可以表示的有效小数位数。

int 数据类型与 C# 中的 int 数据类型一样,范围可以从 -21474836482147483647,因此它最多可以有 10 个有效十进制数字。

因此int 的精度始终为 10。

【讨论】:

  • 它是,虽然它不是很有用。只有在它可以变化的情况下,它才是真正有用的数据,例如在 SQL 十进制数据类型中。
  • 非常感谢您帮助我消除疑虑。请继续这样的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
相关资源
最近更新 更多