【发布时间】:2015-07-09 08:06:40
【问题描述】:
我有一个名为 Location 的地理专栏。 我需要选择 Location.Lat 和 Location.Long 作为单个 VARCHAR 结果。 使用以下我失去了精度:
查询:
SELECT CONVERT(VARCHAR(MAX), Location.Lat) + ' ' + CONVERT(VARCHAR(MAX), Location.Long)
原始位置.Lat:
52.2708633333333原位置.长:
-9.73093666666667上面的结果表格:
52.2709 -9.73094
我知道这是因为 Lat 和 Long 是浮点数并且没有指定精度,因此可能的解决方法是先以指定的精度将其强制为十进制,然后将其转换为 varchar。这似乎......笨重,并且必须选择随机精度将强制任何一个
(a) 如果尾随值过低或丢失,则丢失
(b) 额外的不必要的尾随值。
请告诉我,我缺少一个函数或转换方法来将这些作为准确的 varchar 表示返回!
【问题讨论】:
-
您最初测量纬度和经度的准确度是多少?您是否知道在小数点后第四位,您可以精确到约 10 米?你真的有更精确的测量值,以至于你需要保留额外的数字吗?
-
是的,我认为 5 或 6 位小数就足够准确了,但不喜欢硬编码导致准确性损失的任意值(无论多小,如果它在地理值中我想用它)
标签: sql sql-server floating-point-precision floating-point-conversion sqlgeography