Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL thực hiện phép tính toán học của phép cộng dấu phẩy động như thế nào?

Tôi biết SQL 92 là tiêu chuẩn cũ nhưng tôi khá chắc chắn rằng điều này không được thay đổi trong các phiên bản tiêu chuẩn SQL mới hơn.

SQL 92 định nghĩa

Câu hỏi là:0.10.2 trong truy vấn SELECT 0.1 + 0.2 gần đúng hay chính xác? Câu trả lời là:bạn không biết thì cơ sở dữ liệu cũng không thể biết.
Vì vậy, cơ sở dữ liệu sẽ chạy triển khai được xác định cho các động cơ MySQL và MariaDB, các đường nối này sẽ được xử lý dưới dạng DECIMAL(1,1) kiểu dữ liệu

Tại sao câu trả lời của Nick trả về các giá trị chính xác hoặc các giá trị mong đợi với định nghĩa bảng

SQL 92 cũng định nghĩa

Nick đã thực hiện bằng cách xác định kiểu dữ liệu trong bảng.

Đã chỉnh sửa câu trả lời này vì tôi đã tìm thấy thứ gì đó trong hướng dẫn sử dụng MySQL hôm nay.

Truy vấn

SELECT (0.1 + 0.2) = 0.3 

Kết quả thành 1 trong MySQL, có nghĩa là MySQL sử dụng tính toán số chính xác và sử dụng Toán chính xác Nếu có thể. Vì vậy, MySQL không biết rằng 0.1 , 0.20.3 là các kiểu dữ liệu chính xác ở đây và cần phải tính toán chính xác, giống như tôi đã mong đợi trước lần chỉnh sửa này.

Có nghĩa là truy vấn

SELECT (0.1 + 0.2) = 0.3 

sẽ chạy dưới mui xe ít nhiều giống như

SELECT CAST((0.1 + 0.2) AS DECIMAL(1, 1)) = CAST((0.3) AS DECIMAL(1, 1));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Phân loại MYSQL với học thuyết

  2. Xếp hạng trong PHP và MySQL

  3. Cửa sổ chọn SQL xung quanh hàng cụ thể

  4. Cơ sở dữ liệu nào hoạt động tốt với hơn 200 GB dữ liệu?

  5. MSQL:Làm cách nào để ghi đè mục nhập chỉ khi mục nhập mới cao hơn? khác tạo mục nhập mới