首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中数字、浮点数和小数的区别

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

Stack Overflow用户
提问于 2009-06-29 10:22:16
回答 8查看 868.7K关注 0票数 384

numericfloatdecimal数据类型之间有什么区别?在哪些情况下应该使用哪种数据类型?

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-08-23 17:20:52

仅当小数(最多38位)提供的精度不足时,

才使用浮点或实数数据类型

  • 近似数字数据类型(请参见表3.3)并不存储为许多数字指定的精确值;它们存储的是的非常接近的近似值

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

因此,通常情况下,选择Decimal作为数据类型是最佳选择

  • 你的号码可以放进去。小数精度为10E38~ 38 digits
  • smaller浮点数的存储空间(以及可能的计算速度)对您来说并不重要,
  • 精确的数字行为是必需的,例如在金融应用程序中,在涉及舍入的操作中,或者在等式检查中。(Technet

  1. Exact数字数据类型decimal and numeric - MSDN
  • numeric = decimal (5到17字节)smallmoney将映射到.NET

中的decimal在

  • 中都有(18,0)作为默认参数(精度,小数位数).NET
  • scale=可以存储在Decimal server字节右侧的最大小数位数)和smallmoney(4字节)也是确切的数据类型,将映射到.NET中的decimal并具有4个小数位数

  1. Approximate数字数据类型float and real - MSDN
  • real (4字节)在.NET
  • 中,实数的ISO同义词是float(24)

  • 将映射到Single

在.NET中,

  • float (8字节)
    • 将映射为双精度

无论使用哪种处理器体系结构或提供给float数据类型的numbers

  • The参数的大小定义用于存储浮点number.

  • Approximate数值数据类型的数值类型的位数通常使用较少的存储空间并具有较好的速度(最高可达20倍),浮点number.

  • Approximate数值数据类型的所有浮点数值类型通常都会产生相同的结果,您还应考虑何时在中转换它们

main source:MCTS Self-Paced Training Kit (Exam 70-433): Microsoft® SQL Server® 2008 Database Development -第3章-表、数据类型和声明性数据完整性第1课-选择数据类型(指南)-第93页

票数 556
EN

Stack Overflow用户

发布于 2012-06-28 04:59:37

来自MSDN的指南:Using decimal, float, and real Data

数值和小数数据类型的默认最大精度为38。在Transact-SQL中,numeric在功能上等同于decimal数据类型。当必须严格按照指定的方式存储数据值时,使用decimal数据类型来存储带有小数的数字。

float和real的行为遵循IEEE 754关于近似数字数据类型的规范。由于浮点型和实型数据类型的近似性质,当需要精确的数值行为时,请不要使用这些数据类型,例如在金融应用程序中、在涉及舍入的操作中或在相等检查中。请改用integer、decimal、money或smallmoney数据类型。避免在WHERE子句搜索条件中使用浮点列或实数列,尤其是=和<>运算符。最好将浮点列和实数列限制为>或<比较。

票数 25
EN

Stack Overflow用户

发布于 2015-03-07 01:32:25

它们的数据类型优先级不同

十进制数值在功能上是相同的,但仍然存在数据类型优先级,这在某些情况下可能是至关重要的。

代码语言:javascript
复制
SELECT SQL_VARIANT_PROPERTY(CAST(1 AS NUMERIC) + CAST(1 AS DECIMAL),'basetype')

结果数据类型是numeric,因为它优先于数据类型

按优先级列出的所有数据类型:

Reference link

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1056323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档