2009-10-22 168 views
2

真实,浮动,小数和金钱之间的差异是什么。最重要的是,我什么时候可以使用它们。就像我所理解的那样 - 真实和浮动大约是。类型,这意味着他们不存储确切的价值。你为什么要这样?Sql Server 2005数据类型

由于

回答

2

真实浮子数值类型如与物理尺寸或数学结果遇到处理非常宽范围的值是有用的。

例如,当添加不在相同范围内的值时,它们所引起的精度损失,例如0.00002468 + 1.23E9(即1,230,000)通常可用于实际应用。这是向这些浮点类型的相对紧凑的存储需求付出的小礼物。

小数和金额类型不包括如此广泛的范围(但它们涵盖的范围超出了最典型的会计应用程序),并且不会出现舍入等有损行为。

有关详细信息,请参阅MS-SQL文档。下表提供了指示各种类型的精度,范围和存储要求。

 
Type   Max value    precision(*) Storage 
money  +/-922,000,000,000,000  3 (4?)  8 bytes 
smallmoney +/-200,000     3?   4 bytes 
decimal  varies (as defined)  varies  varies 3 to 17 

real   +/- 3.4 * 10^38   7 digits 4 bytes 
float "56" +/- 1.7 * 10 ^308   15 digits 8 bytes (float can also be declared to be just like a real)  

(*)精度:对于“精确”的类型,这是数字的小数点后的位数。对于“有损”实数和浮点数,这是有效位数。

1

钱是确切的数据类型。因为在它的上限和下限之间是连续的。当你想存储金钱的价值时,你通常会使用它,并且不想失去精确度并且得到由IEEE754引起的舍入误差。十进制是一种类似的精确数据类型,在一定的小数位数(您可以指定)内不会有损。实际等同于浮动(24)。

要清楚,使用除法时仍会发生精确损失,但所有其他基本数学运算不会导致Money和小数类型的精确损失。

See here有关各种Transact SQL数据类型的说明。

相关问题