【问题标题】:Which sql server data type best represents a double in C#? [duplicate]哪种 sql server 数据类型最能代表 C# 中的双精度数? [复制]
【发布时间】:2009-09-17 18:40:37
【问题描述】:

是钱、浮点数、实数、小数、_________?

【问题讨论】:

  • 那个扩展部分作为一个新问题会更好。

标签: c# sql sql-server tsql double


【解决方案1】:

这个问题的答案和所有类型的映射都可以在这里找到。

SQL-CLR Type Mapping

图表,从该页面窃取:


更新于 2013 年 1 月 7 日 - 有一个更新的版本,这里没有那么丰富多彩: SQL Server Data Type Mappings

【讨论】:

  • 这张图表很棒,感谢您参考。
  • 赢了一张图表,我刚刚打印出来并在我的眼球上擦了一遍,谢谢!
  • 谢谢。微软的错字很好 - DECIMIAL
  • @pseudonym27 - 这与操作系统将 SQL Server 数据类型转换为 .NET 运行时数据类型的能力有关,反之亦然。任何时候你在两个不同的平台之间移动都有数据丢失的风险,因为不能保证每个类型的二进制实现是相同的。此外,并非所有数字数据类型都能够准确地以二进制表示,因此系统仅存储近似值。见stackoverflow.com/questions/618535/…
  • 这张图表很漂亮,但错误 - 它列出了 ...Enum 好像有某种方法可以将它们转换为 DB 类型,但枚举表现为它们的底层整数类型(即大多数是 int32 和往返精确地与 db ints);它表明 char(1) 等同于 .net char - 当 unicode 明确暗示它不是时。此外,日期和日期时间显然不会相互往返......并且当将数据库真实映射到.net小数时,保存到数据库时也可能会丢失数据......我没有检查详尽无遗,但这张图表看起来像垃圾。
【解决方案2】:

那将是浮动的。

Mapping CLR Parameter Data

【讨论】:

    【解决方案3】:

    Float 是您要查找的 sql 类型。

    【讨论】:

    • 你是对的,这是最好的匹配。遗憾的是,如果您需要稍后在字段上执行数学运算,浮点数是您可以在 SQL Server 中使用的最糟糕的数据类型之一,因为它会产生舍入错误,因为它不精确。作为 dba,我不希望人们将字段定义为浮点数,因为当您想要报告数据库中的数据并且计算不正确时,我不得不处理他们创建的混乱。
    【解决方案4】:

    float 匹配最佳。 real 的精度只有 32 位,所以基本上没用。

    见:http://msdn.microsoft.com/en-us/library/ms173773.aspx

    【讨论】:

      【解决方案5】:
      “双重精度的同义词是float(53)。” n的默认值为53。

      从页面http://msdn.microsoft.com/en-us/library/ms173773.aspx

      【讨论】:

        猜你喜欢
        • 2017-12-27
        • 1970-01-01
        • 2012-07-05
        • 1970-01-01
        • 2016-05-13
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多