在SQL Server中存储数字11.111的最有效方式
哪种数据类型最有效地存储数字,例如11.111。在SQL Server中存储数字11.111的最有效方式
这些数字在点前有两位数,最多三位。
目前该列是'bigint',我猜测这将需要更改为小数或浮点数。
任何帮助非常感谢。
感谢
我认为你有两个选择:乘以1000并存储为一个int(和出路划分),或者只是存储为双。随着内存和硬盘空间变得如此便宜,它可能不值得进一步优化的麻烦。
当你说双倍你的意思是一个浮动权吗?谢谢您的帮助。 – Chin 2009-11-16 03:46:45
如果您需要确切的表示形式,smallmoney数据类型使用4个字节。
这相当于使用一个int(4字节),并执行乘法/除法来处理小数位。
不要认为它变得比这小 – Amirshk 2009-11-16 02:28:02
使用十进制数据类型来设定确切的精度:
decimal(5,3)
使用5个字节....... – 2009-11-16 02:20:59
是的,所以smallmoney – 2009-11-16 02:27:55
smallmoney是4字节:http://msdn.microsoft.com/en-us/library/ms179882。 aspx – RickNZ 2009-11-16 16:01:52
你应该使用十进制数据类型。它存储精确的浮点数
DECLARE @d decimal(5, 3)
SET @d=12.671
SELECT @d, DATALENGTH(@d)
正如@Mitch指出的那样,这将是5个字节大小。您需要额外支付一个字节,以便更轻松地计算值。
使用5个字节....... – 2009-11-16 02:20:26
..并且应该是DECIMAL(5,3) – 2009-11-16 02:21:37
表示是否需要精确? – 2009-11-16 02:15:20
等一下。整数怎么样?是不是浮动? 11.111是否浮动? – DarthVader 2009-11-16 02:16:20
是的,它需要精确到点后的3分 – Chin 2009-11-16 02:19:37