小编典典

SQL Server 中数字、浮点数和小数之间的区别

all

numeric,float和数据类型之间有什么区别,decimal在哪些情况下应该使用哪些?

对于任何一种金融交易(例如薪金领域),首选哪一种?为什么?


阅读 91

收藏
2022-03-23

共1个答案

小编典典

仅当十进制 (最多 38 位)提供的精度不足 时才* 使用 浮点实数 数据类型 * __

  • 近似数字数据类型(见表 3.3)不存储 为许多 数字指定的精确值;它们存储 的值非常接近 。(技术网

  • 避免在 WHERE 子句搜索条件中使用浮点或实列,尤其是 = 和 <> 运算符。最好将浮点数和实数列限制为 > 或 < 比较。(技术网

所以通常选择 Decimal 作为您的数据类型是最好的选择,如果

  • 你的号码可以放进去。 小数精度 为 10E38[~ 38 位]
  • Float 较小的存储空间(可能还有计算速度)对您来说并不重要
  • 需要精确的数字行为,例如在金融应用程序中、在涉及舍入的操作中或在相等性检查中。(技术网

  1. 精确 数字数据类型十进制和数字 - MSDN

  2. 数字 = 十进制(5 到 17 个字节)

    • 将映射到 .NET 中的 Decimal
    • 两者都具有 (18, 0) 作为 SQL Server 中的默认 (precision,scale) 参数
    • scale = 可以存储在小数点右侧的最大小数位数。
    • money(8 byte) 和 smallmoney(4 byte) 也是精确数据类型,将映射到 .NET 中的 Decimal 并有 4 个小数点 ( MSDN )
  3. 近似 数值数据类型浮点数和实数 - MSDN

  4. 实数(4 字节)

    • 将映射到 .NET 中的 Single
    • 真实的 ISO 同义词是 float(24)
  5. 浮点数(8 字节)
    • 将映射到 .NET 中的 Double

精确数值数据类型
近似数值数据类型

  • 无论使用哪种处理器架构 或数字的大小,* 所有 精确的数字类型总是产生相同的结果 *
  • 提供给浮点数据类型的参数定义了用于存储 浮点数 尾数 的位数。
  • 近似数值数据类型通常使用更少的存储空间并具有更好的速度(高达 20 倍),您还应该考虑何时将它们转换为 .NET

主要来源MCTS 自定进度培训套件(考试 70-433):Microsoft® SQL Server® 2008
数据库开发
- 第 3 章 - 表、数据类型和声明性数据完整性第 1 课 - 选择数据类型(指南) - 第 93 页

2022-03-23