我正在尝试将度量数据(米,千米,平方米)存储在SQL Server 2012中。
什么是最好的数据类型?使用float
(C#:double),decimal
(C#:decimal)甚至是geometry
?还是其他东西?
我正在尝试将度量数据(米,千米,平方米)存储在SQL Server 2012中。
什么是最好的数据类型?使用float
(C#:double),decimal
(C#:decimal)甚至是geometry
?还是其他东西?
数据类型应该是decimal
,要根据数据的特点选择合适的精度;如果可以的话,也可以考虑使用int
类型。
C# Decimal
,这是一种专为金融使用和防止舍入误差而设计的类型。这种设计使得C# Decimal类型在三角函数等方法中使用时比float/double慢。当然,您可以在代码中进行转换,但我认为这不是最直接的方法。Decimal
每个条目需要5-9个字节的存储空间(取决于所使用的精度),这比float(x)替代品要大。因此,根据您的需求使用它。在您的评论中,您指出它与房地产有关,因此我会选择float(24)
(也称为real
),它恰好是4个字节,并直接转换为C# float
。请参见:float and real (Transact-SQL)。float
是什么意思?为什么decimal
的精度不够?如果decimal
的精度比float
低,它会不会更快? - SeToYfloat(24)
(或real
- 它们哪个最常见?),因此在C#中使用float
,对吗? - SeToY这取决于您想要做什么
float或double是非精确数据类型(因此由于舍入问题,5.0 == 5.0可能为false)
Decimal是一种精确的数据类型(因此5.0 == 5.0将始终为true)
而几何/地理(简单说)是用于地图上的位置。
在三个中,浮点计算应该是最快的,因为地理信息是二进制数据,并带有有关投影的一些信息(这里涉及到地图),而十进制技术上不像浮点数那样易于处理。