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

Phép trừ hai giá trị bằng nhau không bằng 0 trong mysql

Đó được gọi là độ chính xác gần đúng . Đây không phải là lỗi, dấu phẩy động kiểu dữ liệu được thiết kế để hoạt động theo cách đó. Họ không thể lưu trữ dữ liệu một cách chính xác. Vì vậy, nếu điều đó quan trọng, bạn nên sử dụng các kiểu dữ liệu điểm cố định, chẳng hạn như DECIMAL trong MySQL.

Mặt khác, bạn luôn có thể sử dụng delta chính xác để so sánh cho dấu phẩy động, như:

SELECT 
  `foo`,
  `bar`,
  IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
 t

như bạn có thể thấy, delta ở đây là 1E-13 (thông thường, như vậy là đủ)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa ngoại MySQL InnoDB giữa các cơ sở dữ liệu khác nhau

  2. Máy chủ Peewee MySQL đã biến mất

  3. Các chỉ mục MySQL hoạt động như thế nào?

  4. cấu trúc cây tốt nhất php / Mysql

  5. Kết nối với MySQL gây ra lỗi Không tìm thấy tên nguồn dữ liệu và không có trình điều khiển mặc định nào được chỉ định