SQL Server中的数字,浮点数和小数点之间的区别
我在Google中搜索并访问了十进制和数字以及SQL Server Helper,以搜集数字,浮点数和小数数据类型之间的差异,并找出在哪种情况下应该使用哪一种。
对于任何类型的金融交易(例如工资领域),哪一个是首选的,为什么?
只有在由十进制(最多38位)提供的精度不足时, 才使用浮点型或实型数据类型
近似数字数据类型不存储为许多数字指定的确切值; 他们存储了一个非常接近的值(Technet)
避免在WHERE子句搜索条件中使用浮点或实数列,尤其是=和<>运算符(Technet)
所以一般情况下,如果你的数字适合它,那么由十进制提供的精度为[10E38〜38位],并且Float的较小存储空间(也许是速度)并不重要,处理异常行为和近似数值类型的问题不是可接受的, 通常使用Decimal 。
更有用的信息
主要来源 :MCTS Self-Paced Training Kit(考试70-433):Microsoft®SQLServer®2008数据库开发 - 第3章 - 表,数据类型和声明性数据完整性第1课 - 选择数据类型(指南) - 第93页
MSDN准则:使用小数点,浮点数和实数据
数字和小数数据类型的默认最大精度为38.在Transact-SQL中,数字在功能上等同于小数数据类型。 当数据值必须完全按指定存储时,使用小数数据类型来存储带小数的数字。
float和real的行为遵循关于近似数值数据类型的IEEE 754规范。 由于float和真实数据类型的近似性质,当需要精确的数字行为时(例如财务应用程序中,涉及舍入操作或相等检查的操作),请不要使用这些数据类型。 相反,使用整数,小数,金钱或smallmoney数据类型。 避免在WHERE子句搜索条件中使用浮点或实数列,尤其是=和<>运算符。 最好将float和real列限制为>或<比较。
不是一个完整的答案,而是一个有用的链接:
“我经常对十进制值进行计算,在某些情况下,在进行任何计算之前将十进制值尽快浮动以快速浮动,会产生更好的精度。”
http://sqlblog.com/blogs/alexander_kuznetsov/archive/2008/12/20/for-better-precision-cast-decimals-before-calculations.aspx
链接地址: http://www.djcxy.com/p/21353.html上一篇: Difference between numeric, float and decimal in SQL Server