我有一個db存儲經度和緯度。我將緯度列設置爲十進制9,7,將經度設置爲十進制10,7。當緯度爲9個數字時,它工作正常,問題是如果緯度是8個數字,它將在座標後面加上一個尾部0。有沒有在phpmyadmin的方式來防止這種情況?或者,我應該四捨五入小心之前將它們添加到數據庫中的PHP?mysql數據庫加尾0到十進制
0
A
回答
0
經度和緯度本質上是近似值,特別是那些從GPS測量得出的值。這些是模擬量,並且是數字測量的不精確的量。
您無法比較這些值中的兩個值是否相等,並希望事情正常工作;近似值不會以這種方式工作。它們本質上有點模糊。
如果你想知道,例如zip.long/zip.lat是否等於long/lat,你需要使用一個像這樣的SQL表達式。
WHERE zip.long BETWEEN long - epsilon AND long + epsilon
AND zip.lat BETWEEN lat - epsilon AND lat + epsilon
如果您正在尋找10米精度,epsilon的值應該是0.00001268(1.268e-05)。我們知道這是因爲緯度爲六十海里,並且很容易將海里轉換爲米。
關於尾部零的問題提示您使用字符串比較來匹配經度和緯度。也就是說,比起使用數字相等來比較這樣的數字更具欺騙性。
順便說一句,FLOAT
數據類型(32位IEEE 754浮點)對經緯度有很大的精度,除非你是一個測量員並知道Lambert和UTM投影之間的差異。
相關問題
- 1. 如何插入十六進制/二進制?成mysql數據庫?
- 2. 如何將十進制插入到mysql數據庫中?
- 3. 十進制收益增加數在MySQL
- 4. Mysql的十進制到PHP
- 5. MySQL的十進制數據爲
- 6. Swift 2 - 向CGFloat添加十進制0
- 7. 解壓main.cvd十六進制數據庫
- 8. H2數據庫 - 十進制分隔符
- 9. 刪除前導0直到十進制
- 10. 如何在MySQL數據庫中存儲十六進制值?
- 11. 遷移RGB值在MySQL數據庫HSL和十六進制
- 12. 從十六進制到十進制,二進制到十進制和八進制到十進制程序C++
- 13. 從MySQL檢索十進制數據,並把到一個數組
- 14. atoi和前導0的十進制數
- 15. MySQL十進制9.99999999
- 16. mysql表格:十進制數字默認值0
- 17. 將一個0加到十進制數的末尾以確保它始終是2位小數?
- 18. 將十進制添加到整數
- 19. 加載數據Infile - 負數十進制截斷(到正數)
- 20. 十進制數可以用十進制數加/減嗎?
- 21. 十進制格式忽略十進制0
- 22. 十進制轉換爲十六進制缺少填充0
- 23. jquery添加十進制數
- 24. C#十進制數加倍?
- 25. 十進制GCC庫
- 26. 轉換二進制到十進制和翻轉0和1 JAVA
- 27. Javascript十進制到十六進制
- 28. 轉換十六進制到十進制
- 29. 十進制數據entery
- 30. 將二進制浮點數轉換爲紙上的十進制數。尾數以0開頭
這是在php中使用數據庫時出現問題,還是在phpmyadmin中查看數據時只是一個美學問題? – TheWolf
使用數據時出現問題,我想匹配緯度/經度,因爲這個佔位符0被添加,它有時不匹配。 – user1572796
我從數據庫中檢索數據時將值轉換爲int(或使用'intval()')。不過,我認爲PHP應該自己做...你怎麼連接到MySQL? – TheWolf