11.1.4 & NBSP; Các loại điểm nổi [giá trị gần đúng] - Float, Double
Các loại FLOAT
và DOUBLE
biểu thị các giá trị dữ liệu số gần đúng. MySQL sử dụng bốn byte cho các giá trị chính xác đơn và tám byte cho các giá trị chính xác kép.
Đối với FLOAT
, tiêu chuẩn SQL cho phép một đặc tả tùy chọn của độ chính xác [nhưng không phải là phạm vi của số mũ] trong các bit theo từ khóa FLOAT
trong ngoặc đơn, nghĩa là FLOAT[
p
]. MySQL cũng hỗ trợ đặc tả độ chính xác tùy chọn này, nhưng giá trị chính xác trong FLOAT[
p
] chỉ được sử dụng để xác định kích thước lưu trữ. Độ chính xác từ 0 đến 23 dẫn đến cột FLOAT
chính xác đơn 4 byte. Độ chính xác từ 24 đến 53 dẫn đến cột DOUBLE
chính xác kép 8 byte.
MySQL cho phép cú pháp không tiêu chuẩn: ________ 9, ________ 10] hoặc ________ 11, ________ 10] hoặc ____ 13, ________ 10]. Ở đây, ________ 15, ____ 10] có nghĩa là các giá trị có thể được lưu trữ với tổng số FLOAT
7 chữ số, trong đó FLOAT
0 chữ số có thể là sau điểm thập phân. Ví dụ: một cột được xác định là FLOAT
9 được hiển thị là DOUBLE
0. MySQL thực hiện làm tròn khi lưu trữ các giá trị, vì vậy nếu bạn chèn DOUBLE
1 vào cột FLOAT
9, kết quả gần đúng là DOUBLE
3.
Kể từ MySQL 8.0.17, cú pháp không đạt tiêu chuẩn ____ 9, ____ 10] và cú pháp [________ 17, ________ 10] không được chấp nhận và bạn sẽ mong đợi hỗ trợ cho nó sẽ bị xóa trong phiên bản MYSQL trong tương lai.DOUBLE[
syntax is deprecated and you should expect support for it to be removed in a future version of MySQL. FLOAT
7,FLOAT
0]
Bởi vì các giá trị điểm nổi là gần đúng và không được lưu trữ dưới dạng các giá trị chính xác, cố gắng coi chúng là chính xác trong so sánh có thể dẫn đến các vấn đề. Họ cũng phải tuân theo các phụ thuộc nền tảng hoặc thực hiện. Để biết thêm thông tin, xem Phần & NBSP; B.3.4.8, Các vấn đề về các giá trị dấu phẩy động.
Để có tính di động tối đa, mã yêu cầu lưu trữ các giá trị dữ liệu số gần đúng nên sử dụng FLOAT
hoặc DOUBLE
9 mà không có thông số kỹ thuật về độ chính xác hoặc số chữ số.
MySQL hỗ trợ tất cả các loại dữ liệu số SQL tiêu chuẩn. Các loại này bao gồm các loại dữ liệu số chính xác [FLOAT
0, FLOAT
1, FLOAT
2 và FLOAT
3], cũng như các loại dữ liệu số gần đúng [FLOAT
, FLOAT
5 và DOUBLE
9]. Từ khóa FLOAT
7 là từ đồng nghĩa với FLOAT
0 và các từ khóa FLOAT
9 và FLOAT
0 là từ đồng nghĩa với FLOAT
2. MySQL coi DOUBLE
là từ đồng nghĩa với DOUBLE
9 [một phần mở rộng không đạt tiêu chuẩn]. MySQL cũng coi FLOAT
5 là từ đồng nghĩa với DOUBLE
9 [biến thể không đạt tiêu chuẩn], trừ khi chế độ FLOAT
6 SQL được bật.
Kiểu dữ liệu FLOAT
7 lưu trữ các giá trị bit và được hỗ trợ cho các bảng FLOAT
8, FLOAT
9, FLOAT[
p
0 và FLOAT[
p
1.
Để biết thông tin về cách MySQL xử lý việc gán các giá trị ngoài phạm vi cho các cột và tràn trong quá trình đánh giá biểu thức, xem Phần & NBSP; 11.1.7, Xử lý ngoài phạm vi và xử lý tràn.
Để biết thông tin về các yêu cầu lưu trữ của các loại dữ liệu số, xem Phần & NBSP; 11.7, Yêu cầu lưu trữ kiểu dữ liệu.
Đối với các mô tả về các hàm hoạt động trên các giá trị số, xem Phần & NBSP; 12.6, các hàm số và toán tử. Kiểu dữ liệu được sử dụng cho kết quả tính toán trên các toán hạng số phụ thuộc vào các loại toán hạng và các hoạt động được thực hiện trên chúng. Để biết thêm thông tin, xem Phần & NBSP; 12.6.1, toán tử số học.
11.1.3 & nbsp; các loại điểm cố định [giá trị chính xác] - thập phân, số
Các loại FLOAT
2 và FLOAT
3 lưu trữ các giá trị dữ liệu số chính xác. Các loại này được sử dụng khi điều quan trọng là duy trì độ chính xác chính xác, ví dụ với dữ liệu tiền tệ. Trong MySQL, FLOAT
3 được triển khai là FLOAT
2, vì vậy các nhận xét sau đây về FLOAT
2 áp dụng như nhau cho FLOAT
3.
MySQL lưu trữ các giá trị FLOAT
2 ở định dạng nhị phân. Xem Phần & NBSP; 12,25, Toán học chính xác.
Trong khai báo cột FLOAT
2, độ chính xác và tỷ lệ có thể được chỉ định [và thường là] được chỉ định. Ví dụ:
salary DECIMAL[5,2]
Trong ví dụ này, FLOAT[
p
0 là độ chính xác và FLOAT[
p
1 là thang đo. Độ chính xác đại diện cho số lượng các chữ số quan trọng được lưu trữ cho các giá trị và tỷ lệ biểu thị số chữ số có thể được lưu trữ theo điểm thập phân.
SQL tiêu chuẩn yêu cầu FLOAT[
p
2 có thể lưu trữ bất kỳ giá trị nào với năm chữ số và hai số thập phân, do đó, các giá trị có thể được lưu trữ trong phạm vi cột FLOAT[
p
3 từ FLOAT[
p
4 đến FLOAT[
p
5.
Trong SQL tiêu chuẩn, số thập phân cú pháp [____ 17] tương đương với số thập phân [____ 17,0]. Tương tự, cú pháp FLOAT
2 tương đương với số thập phân [____ ____ 17,0], trong đó việc thực hiện được phép quyết định giá trị của FLOAT
7. MySQL hỗ trợ cả hai dạng biến thể của cú pháp FLOAT
2 này. Giá trị mặc định của FLOAT
7 là 10.DECIMAL[
is equivalent to FLOAT
7]DECIMAL[
. Similarly, the syntax FLOAT
7,0]FLOAT
2 is equivalent to DECIMAL[
, where the implementation is permitted to decide the value of FLOAT
7,0]FLOAT
7. MySQL supports both
of these variant forms of FLOAT
2 syntax. The default value of FLOAT
7 is 10.
Nếu tỷ lệ là 0, các giá trị FLOAT
2 không chứa phần thập phân hoặc phần phân số.
Số lượng chữ số tối đa cho FLOAT
2 là 65, nhưng phạm vi thực tế cho một cột FLOAT
2 đã cho có thể bị hạn chế bởi độ chính xác hoặc tỷ lệ cho một cột nhất định. Khi một cột như vậy được gán một giá trị với nhiều chữ số theo điểm thập phân hơn so với được cho phép theo thang đo được chỉ định, giá trị được chuyển đổi thành thang đo đó. .