【发布时间】:2015-03-20 00:37:15
【问题描述】:
在 C# 中存储地理定位数据时最好使用什么数据类型?我会使用十进制的准确性,但对十进制浮点数的运算比二进制浮点数(双精度)要慢。
我了解到,大多数情况下,纬度或经度的精度不需要超过 6 或 7 位。那么双打的不精确性是否重要还是可以忽略不计?
【问题讨论】:
-
我会问相反的问题:性能差异是否重要还是可以忽略?
-
在数据库中你应该使用“sql空间数据类型”来存储经度和纬度
-
请注意,.NET BCL 本身在其GeoCoordinate class 中使用双精度,这强烈表明精度可能足够。
-
NodaTime 的 TzdbZoneLocation 也使用 double。
-
1) 我会考虑定点。 2) 由于您经常需要对地理坐标进行三角运算,而这些仅针对
double实现,因此double可能是最合适的。
标签: c# latitude-longitude geopoints