2013-04-22 10 views
7

Mam float variable-field1 w 2 tables-table1 & table2. Kiedy wyszukuję w tabeli i sprawdzam wartości pola, oba wyglądają identycznie, ale gdy znajdę ich różnicę, daję różnicę zamiast zera.Porównywanie 2 wartości float w sqlserver

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

Differnce---1.4210854715202E-14 

Dlaczego miałbym dostać ten problem?

+1

Cóż, dlaczego używasz 'FLOAT' zamiast' DECIMAL'? –

+0

Dane są eksportowane z arkusza kalkulacyjnego, a serwer sqlserver automatycznie wykrywa go za pomocą FLOAT. – user1050619

+2

'FLOAT' jest przybliżonym typem danych, więc tego rodzaju różnicę można się spodziewać – Lamak

Odpowiedz

13
  • Zastosowanie ROUND w celu ograniczenia miejsc dziesiętnych
  • Wpisz ABS(value1-value2) < 0.00001 z jakiejś odpowiedniej wartości
  • Nie używaj pływak
+0

Czy jesteś jednym z założycieli tej witryny? Pytam, ponieważ twój przedstawiciel jest tak wysoki! – whatwhatwhat

Powiązane problemy