decimal(C# 참조)

업데이트: 2007년 11월

decimal 키워드는 128비트 데이터 형식을 나타냅니다. decimal 형식은 부동 소수점 형식에 비해 전체 자릿수는 크고 범위는 작아서 재무 및 통화 계산에 적합합니다. 다음 표에서는 decimal 형식의 대략적인 범위와 전체 자릿수를 보여 줍니다.

형식

근사 범위

전체 자릿수

.NET Framework 형식

decimal

±1.0 × 10−28 ~ ±7.9 × 1028

28-29개의 유효 자릿수

System.Decimal

리터럴

숫자 형식의 실수 리터럴이 decimal로 처리되게 하려면 다음과 같이 접미사 m 또는 M을 사용합니다.

decimal myMoney = 300.5m;

m 접미사가 없으면 숫자가 double로 처리되어 컴파일 오류가 발생합니다.

변환

정수 계열 형식은 암시적으로 decimal로 변환되어 계산 결과가 decimal로 나타납니다. 따라서 접미사를 붙이지 않고 정수 리터럴을 사용하여 decimal 변수를 초기화할 수 있습니다. 예를 들면 다음과 같습니다.

decimal myMoney = 300;

부동 소수점 형식과 decimal 형식 간의 암시적 변환은 없습니다. 따라서 이 두 형식 간의 변환에는 캐스트를 사용해야 합니다. 예를 들면 다음과 같습니다.

decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;

또한 같은 식에서 decimal과 숫자 정수 계열 형식을 혼합할 수 있습니다. 그러나 캐스트를 사용하지 않고 decimal과 부동 소수점 형식을 혼합하면 컴파일 오류가 발생합니다.

암시적 숫자 변환에 대한 자세한 내용은 암시적 숫자 변환 표(C# 참조)를 참조하십시오.

명시적 숫자 변환에 대한 자세한 내용은 명시적 숫자 변환 표(C# 참조)를 참조하십시오.

Decimal 출력 형식 지정

String.Format 메서드를 사용하거나 String.Format()을 호출하는 Console.Write 메서드를 통해 결과의 형식을 지정할 수 있습니다. 통화 형식은 이 문서 뒷부분에 있는 두 번째 예제처럼 표준 통화 형식 문자열 "C" 또는 "c"를 사용하여 지정합니다. String.Format 메서드에 대한 자세한 내용은 String.Format을 참조하십시오.

예제

이 예제에서는 같은 식에 decimal과 int가 혼합되어 있습니다. 계산 결과는 decimal 형식입니다.

다음 예제에서는 문을 사용하여 double과 decimal 변수를 추가하려 합니다.

double x = 9;
Console.WriteLine(d + x); // Error

다음 오류가 발생합니다.

Operator '+' cannot be applied to operands of type 'double' and 'decimal'

public class TestDecimal
{
    static void Main()
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
}
// Output: 12.1

이 예제에서는 통화 형식 문자열을 사용하여 출력 서식을 지정합니다. x는 소수 자릿수가 $0.99를 초과하기 때문에 반올림됩니다. 최대 자릿수를 나타내는 변수 y는 올바른 서식으로 정확하게 표시됩니다.

public class TestDecimalFormat
{
    static void Main()
    {
        decimal x = 0.999m;
        decimal y = 9999999999999999999999999999m;
        Console.WriteLine("My amount = {0:C}", x);
        Console.WriteLine("Your amount = {0:C}", y);
    }
}
/* Output:
    My amount = $1.00
    Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 1.3 형식 및 변수

  • 4.1.7 decimal 형식

참고 항목

개념

C# 프로그래밍 가이드

참조

C# 키워드

정수 계열 형식 표(C# 참조)

기본 제공 형식 표(C# 참조)

암시적 숫자 변환 표(C# 참조)

명시적 숫자 변환 표(C# 참조)

Decimal

기타 리소스

C# 참조