掩于岁月 发表于 2023-9-14 12:05:17

SQL Server浮点数和小数之间的差异

numeric,float和decimal数据类型有什么区别,应该在什么情况下使用?
对于任何类型的金融交易(如工资领域),首选哪种交易,为什么?
                                                               
    解决方案:                                                               
                                                                浮点或实数据类型仅在十进制(最多38位)提供的精度不足时使用
许多数字指定的确切值不能存储类似的数字数据类型;它们的存储值非常接近。(Technet)
避免在WHERE浮点或实数列用于子句搜索条件,尤其是=和运算符(Technet)
所以一般来说,如果你的数字可以容纳,十进制提供的精度是[10E38位数和较小的38位数Float存储空间(可能还有速度)并不重要,处理异常行为和近似值类型的问题也不重要,一般使用Decimal。
更有用的信息
数字=十进制(5-17字节)(精确数字数据类型)
将在.NET中映射为Decimal
在SQL Server中都有(18,0)作为默认(precision,scale)参数
scale =最大小数位数可以存储在小数点右侧。
请注意,money(8字节)和smallmoney(4字节)也是精确的,它们映射到.NET中的Decimal并且有四个小数点(MSDN)
十进制和数字(Transact-SQL)-MSDN
实数(4字节)(近似 数据类型)
将在.NET中映射为Single
ISO的real同义词是float(24)
浮点数和实数(Transact-SQL)-MSDN
浮点数(8字节)(近似 数据类型)
将在.NET中映射为Double
无论使用哪种类型的处理器体系结构或数字的大小,所有精确的数字类型都始终产生相同的结果。
提供给float用于存储浮点数尾数的数据类型参数定义了位数。
近似数据类型通常使用较少的存储空间和较好的速度(最高20倍),你也应该考虑.NET中* 改变他们的时间
页: [1]
查看完整版本: SQL Server浮点数和小数之间的差异