2017-05-09 17 views
1

열 A + 열 B + 열 C를 선택 쿼리에 3 개의 열을 함께 추가합니다. 대부분의 열에 대해서는 올바른 것으로 계산됩니다. 그러나 응답이 0이되어야하는 특정 열은 1.36424205265939E-12 또는 그와 비슷한 것으로 나타납니다.0을 1.36424205265939E-12로 표시하는 SQL 쿼리

예 : 나의 수학은 0 + 1414 + -1414입니다. 대답은 0이어야하지만 대신 1.36424205265939E-12의 결과가 나타납니다.

내 모든 데이터 유형은 수레입니다. 열 B와 C는 임시 테이블에서오고 열 A는 일반 테이블에서옵니다.

+3

음 ... 데이터 유형이 부동이므로 예상됩니다. 정확한 결과를 원하면 정확한 데이터 유형 – Lamak

+0

@Lamak을 사용하십시오. 십진수로 변환하면 동일한 결과를 얻을 수 있습니다. – Joey

+2

모든 숫자를 변환하지 않으면 :'CONVERT (DECIMAL (16,4), 0) + .....' – Lamak

답변

1

산술 연산 전후의 값을 10 진수로 변환 할 수 있습니다. 예 :

select cast(Column A + Column B + Column C as decimal(28, 6)) 

으로 충분해야합니다.

이 때문에 부동 소수점 산술을 실제로 사용할 때만 부동 소수점을 사용해야합니다. 대부분의 경우, 특히 비즈니스에서는 고정 소수점 계산이 더 적합합니다.

0

부동 소수점 숫자의 세계에 오신 것을 환영합니다.

두 개의 부동 소수점 숫자가 정확히 일치하면 작은 기적입니다. 부동 소수점 산술은 수치 적으로는 machine epsilon이라는 허용 오차 내에서만 정확하기 때문입니다.

그래서 분자 구조 과학과 천문학을하는 사람들이 동일한 계산 시스템을 사용할 수 있습니다.

부동 소수점 숫자를 표시 할 때 the ROUND() function을 사용하면 도움이되는 경우가 많습니다. 당신은 부동 소수점 숫자를 이해하지 않는 경우 예를 들어,

SELECT ROUND(0.0 + 1414.0 + -1414.0, 2) 

, 그들에 대해 학습하십시오. 프로그래밍 분야에서 일할 경우 해당 영역의 기본 사항을 알아야합니다.

그것은 단지 성공적으로 마이크로 프로세서 (우리의 대부분은 2017 년 지금 무엇을 사용)의 새로운 펜티엄 라인을 출시했다 1994

인텔에서 오래된 농담 떠오른다. 첫번째 펜티엄은 a defect in their floating point arithmetic, in which certain computations were inaccurate by more than machine epsilon이었다. 그럼에도 불구하고 매우 성공적인 성공적인 제품 출시 및 인텔의 회장 인 앤드류 그 로브 (Andrew Grove)에게 많은 돈을 벌었습니다.

그래서 Andy Grove는 술집에 들어갑니다. 그는 기분이 좋아서 바텐더에게 "너의 최고의 스카치 위스키를 줘."라고 말했습니다.

바텐더는 27 세의 스카치의 세 손가락을 부어서 말합니다. "그건 20 달러입니다."

Grove는 막대에 20 달러짜리 지폐를 넣고 잠시 보면서 "변경을 유지하십시오."라고 말합니다.