decimal, float 및 real 데이터 사용

decimal 데이터 형식은 최대 38자릿수를 저장할 수 있으며 모두 소수점 이하 자릿수에 올 수 있습니다. decimal 데이터 형식은 정확한 숫자를 저장합니다. 저장된 값의 근사값은 없습니다.

decimal 열, 변수 및 매개 변수를 정의하는 두 가지 특성은 다음과 같습니다.

  • p

    전체 자릿수 또는 개체가 보유할 수 있는 자릿수를 지정합니다.

  • s

    소수 자릿수 또는 소수점 이하 자릿수를 지정합니다.

    p와 s는 다음 규칙을 따라야 합니다. 0 <= s <= p <= 38.

numeric 및 decimal 데이터 형식의 기본 전체 자릿수 최대값은 38입니다. Transact-SQL에서 numeric은 decimal 데이터 형식과 동일한 기능을 합니다.

데이터 값을 지정된 대로 저장해야 하는 경우 decimal 데이터 형식을 사용하여 소수점이 있는 숫자를 저장합니다.

수치 연산이 결과의 전체 자릿수 및 소수 자릿수에 주는 영향은 전체 자릿수, 소수 자릿수 및 길이(Transact-SQL)를 참조하십시오.

float 및 real 데이터 사용

float 및 real 데이터 형식은 근사 데이터 형식입니다. float 및 real의 동작은 근사 숫자 데이터 형식에 대한 IEEE 754 사양을 따릅니다.

근사 숫자 데이터 형식은 여러 숫자에 지정된 정확한 값을 저장하지 않고 해당 값에 가장 가까운 근사값을 저장합니다. 대부분의 응용 프로그램에서 지정된 값과 저장된 근사값 간의 사소한 차이는 무시되지만 그렇지 않은 경우도 있습니다. float 및 real 데이터 형식에는 근사 속성이 있으므로 금융 관련 응용 프로그램과 같이 반올림 또는 등가 확인 등이 이루어지는 작업에서 정확한 숫자가 필요한 경우에는 사용하지 마십시오. 대신 integer, decimal, money 또는 smallmoney 데이터 형식을 사용하십시오.

특히 = 및 <> 연산자가 있는 WHERE 절 검색 조건에서는 float 또는 real 열을 사용하지 마십시오. float 및 real 열을 > 또는 < 비교로 제한하는 것이 가장 좋습니다.

IEEE 754 사양은 반올림, 올림, 내림 및 반내림의 네 가지 반올림 모드를 제공합니다. Microsoft SQL Server에서는 올림을 사용합니다. 네 가지 모두 보장된 전체 자릿수에 정확하게 맞지만 부동 소수점 값에 있어서는 결과가 약간 다를 수 있습니다. 부동 소수점의 이진 표시에는 여러 가지 합법적인 반올림 방법 중 하나가 사용될 수 있으므로 부동 소수점 값을 확실하게 수량화할 수는 없습니다.