MYSQL儲存經緯度資料型別

2021-10-05 05:32:06 字數 2273 閱讀 7100

我們在做定位或者一些基於位置的系統的時候,肯定有需要用到儲存位置的經緯度,來精確判斷位置座標等。

赤道周長(公尺)

度數 (度)

400076000

360111322.2222

111132.22222

0.11113.222222

0.01

111.3222222

0.001

11.13222222

0.0001

1.113222222

0.00001

0.111322222

0.000001

0.011132222

0.0000001

所以,只需要精確到小數點後 7 位,精度就是 1cm,因此,資料庫儲存經緯度採用 decimal(10, 7) 即可。

附:decimal簡介

對sql server而言,decimal可用來儲存具有小數點而且數值確定的數值,它不像float和real是用來儲存近似值。對於visual basic而言,decimal是其版本5新增的資料型別,目的是滿足進行精密數**算的需求,它是範圍最大、最精確的浮點數型別。對於excel而言,decimal()函式用於按給定基數將數字的文字表示形式轉換成十進位制數。

中文名decimal型變數或decimal()函式

外文名decimal

最大可能值1

+/-79228162514264337593543950335

最大可能值2

+/-7.9228162514264337593543950335

最小非零值

+/-0.0000000000000000000000000001

用於visual basic用於excel

用於sql server

命名規則

decimal的命名格式為:

在這裡數字指乙個或多個數(0,1,…,9)的組合,因而一百萬能夠被表示為1000000或+100000,數字百分之一(1/100)能夠被表示為0.01。值得注意的是,逗號(,)是不允許在乙個 decimal名稱**現的。[5]

資料精度

對sql server而言,decimal和numeric視為相同的型別,它們可用來儲存具有小數點而且數值確定的數值。它們不像float和real是用來儲存近似值。此型別的列其宣告方式為decima[(p[,s])]或numericl[(p[,s])]。其中p是此數值全部的位數,含小數部分但不包括小數點,s則是小數的位數。p值稱為此數值的精確度,例如:decimal(10,3)表示共有7位整數3位小數,此例的精確度為10位。此型別的列可儲存的值範圍為1038-1到-1038-1之間。其占用儲存空間依精確度不同而不同,下表給出decimal型別變數精確度和占用空間的關係。

精確度 占用空間

1~9 5

10~19 9

20~28 13

29~38 17

如果使用該型別的變數未指定精確度,則系統使用預設的18位精確度,如果未加以指定小數字數的話,系統的預設值為0位小數。sql server搭配的前端開發工具(如vb,delphi),其所支援的精確度為28位,如果需要超過28位的精確度的話,可以以命令列的方式執行sqlservr.exe啟動sql server,並使用/引數即可,在此種狀況下,此型別最大的精確度為38。

用於visual basic

資料精度

decimal變數儲存為96位(12個位元組)無符號的整型形式帶符號的整型形式,並除以乙個10的冪數。這個變比因子決定了小數點右面的數字位數,其範圍從0到28變比因子為0(沒有小數字)的情形下,最大的可能值為+/-79,228,162,514,264,337,593,543,950,335。而在有28個小數字的情況下,最大值為+/-7.9228162514264337593543950335,而最小的非零值為+/-0.0000000000000000000000000001。

注意事項

decimal資料型別只能在variant中使用,即不能宣告一變數為decimai的型別。不過可用cde函式,建立乙個子型別為decimal的variant。

用於excel

語法結構為:

1)從語法結構可以看出,該函式只有兩個必選引數,各引數的作用如下:

text:該引數用於指定要轉化的資料,其長度必須小於或等於255個字元;

radix:該引數用於指定轉換基數,其值必須大於或等於2(二進位制或基數2)且小於或等於36(基數36)。

注意事項

text引數可以是對於基數有效的字母數字字元的任意組合,並且不區分大小寫;

如果任何乙個引數超出其限制,十進位制可能返回#num!或者#value!錯誤值。

MYSQL儲存經緯度使用什麼資料型別

我們在做定位或者一些基於位置的系統的時候,肯定有需要用到儲存位置的經緯度,來精確判斷位置座標等。那麼我們在資料庫中用什麼字段型別去儲存經緯度呢?我們都知道經緯度範圍是 180 180。但是經緯度有可能是這樣的值40.69847032728747。肯定是儲存資料精度越高,最終位置定位越準確。但是考慮到...

MYSQL儲存經緯度使用什麼資料型別

我們在做定位或者一些基於位置的系統的時候,肯定有需要用到儲存位置的經緯度,來精確判斷位置座標等。那麼我們在資料庫中用什麼字段型別去儲存經緯度呢?我們都知道經緯度範圍是 180 180。但是經緯度有可能是這樣的值40.69847032728747。肯定是儲存資料精度越高,最終位置定位越準確。但是考慮到...

EF儲存經緯度資料的問題

當採用ef coder first生成的dbcontext儲存decimal型別資料到資料庫,預設只會儲存小數點後的前2位小數,其餘均置0 例如儲存101.182352152322,實際存到資料庫裡的資料為101.180000000000。解決方法 在建立專案dbcontext時,重寫dbconte...