2013-04-22 47 views
7

Tôi có một phao variable-field1 trong 2 tables-table1 & table2. Khi tôi truy vấn bảng và kiểm tra các giá trị của trường cả hai trông giống hệt nhau nhưng khi tôi tìm thấy sự khác biệt của nó nó cho một sự khác biệt thay vì bằng không.So sánh 2 giá trị float trong sqlserver

Field1(Table1) value---84.4660194174757 
Field2(Table2) value---84.4660194174757 

Differnce---1.4210854715202E-14 

Tại sao tôi gặp vấn đề này?

+1

Vâng, tại sao bạn sử dụng 'FLOAT' thay vì' DECIMAL'? –

+0

Dữ liệu được xuất từ ​​bảng tính và sqlserver tự động phát hiện bằng FLOAT .. – user1050619

+2

'FLOAT' là kiểu dữ liệu gần đúng, do đó, sự khác biệt này có thể được mong đợi – Lamak

Trả lời

13
  • Sử dụng ROUND để hạn chế chữ số thập phân
  • Sử dụng ABS(value1-value2) < 0.00001 với một số giá trị phù hợp
  • Không sử dụng phao
+0

Bạn có phải là người sáng lập trang web này không? Tôi hỏi vì đại diện của bạn quá cao! – whatwhatwhat

Các vấn đề liên quan