如下表所示
所以,只需要精确到小数点后7位,精度就是1CM,因此,数据库保存经纬度采用 decimal(10,7) 即可。
| 赤道周长(米) | 度数(度) |
| 40076000 | 360 |
| 111322.2222 | 1 |
| 11132.22222 | 0.1 |
| 1113.222222 | 0.01 |
| 111.3222222 | 0.001 |
| 11.13222222 | 0.0001 |
| 1.113222222 | 0.00001 |
| 0.111322222 | 0.000001 |
| 0.011132222 | 0.0000001 |
问题1:为什么不采用float?
答:float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,
问题2:为什么不用字符串?
答:字符串不方便数据库计算
如下表所示
所以,只需要精确到小数点后7位,精度就是1CM,因此,数据库保存经纬度采用 decimal(10,7) 即可。
| 赤道周长(米) | 度数(度) |
| 40076000 | 360 |
| 111322.2222 | 1 |
| 11132.22222 | 0.1 |
| 1113.222222 | 0.01 |
| 111.3222222 | 0.001 |
| 11.13222222 | 0.0001 |
| 1.113222222 | 0.00001 |
| 0.111322222 | 0.000001 |
| 0.011132222 | 0.0000001 |
问题1:为什么不采用float?
答:float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,
问题2:为什么不用字符串?
答:字符串不方便数据库计算
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/lzjpc500/article/details/49956803
本文介绍了一种精确存储经纬度的方法,使用decimal(10,7)类型可以达到厘米级精度,避免了float和double类型的常见误差,并解释了不使用字符串的原因。
1万+

被折叠的 条评论
为什么被折叠?



