2012-05-04 3 views
0

분명히 동일한 두 숫자의 차이를 얻으려고하면 0이 아닌 숫자가 생깁니다. SQL Server의 반올림 및 값 비교 문제

product_price  min_product_price price_dif 
40,609756097561  40,609756097561   -2,1316282072803E-14 

내가는이 이어질 모든 쿼리없이 대답하기 어려운 질문이 될 수 이해하지만, 나는

product_price가 바로 ERP 데이터베이스에서 제공, 설명하려고합니다.

min_product_price

절하여 그룹과 함께

MIN(ItemSellingPrices.UnitPrice) as min_product_price 

얻어진다. 숫자가 같은 것을 의미하지 않아야합니까?

나는 이런 종류의 문제에 경험이 없으므로 너무 근본적인 사과를드립니다.

+1

부동 소수점 수를 비교할 때는 항상 델타를 사용하거나 @ w0lf suggests와 같은 고정 형식을 사용해야합니다. Rudy Velthuis의 [this excellent article] (http://rvelthuis.de/articles/articles-floats.html)의 부동 소수점을 읽을 수 있습니다. –

답변

2

부동 소수점 문제처럼 보입니다.

float 또는 real 열에 금액을 저장하는 경우 데이터 유형 대신 decimal/numeric을 사용해보세요.

십진수 12 개를 저장하는 경우, 예를 들어 decimal(18, 12)을 사용할 수 있습니다.

+0

사실 저는보기를 사용하고 있습니다. 그것도 같을까요? – Mike

+1

절대적으로. 뷰에 사용 된 테이블에서 데이터 유형을 변경해야합니다. 어디에서나 십진법을 사용해야하는 금액을 저장/나타냅니다. – GolfWolf

+0

테이블을 수정할 수 없다면 (예를 들어 다른 응용 프로그램에 속할 수도 있음) 추가 작업을 수행하기 전에 값을 10 진수 데이터 형식으로 변환 할 수 있습니다. – GolfWolf