반응형
실수형 decimal (128bit) 


이름이 decimal 인데 실수형이다 


큰 데이터를 다룰때 사용된다





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

형식근사 범위전체 자릿수.NET 형식
decimal(-7.9 x 1028 ~ 7.9 x 1028) / (100 ~ 1028)28-29개의 유효 자릿수System.Decimal



decimal의 기본값은 0m입니다.

리터럴

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

C#
decimal myMoney = 300.5m;

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

변환

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

C#
decimal myMoney = 300;

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

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

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

암시적 숫자 변환에 대한 자세한 내용은 암시적 숫자 변환 표를 참조하세요.

명시적 숫자 변환에 대한 자세한 내용은 명시적 숫자 변환 표를 참조하세요.

decimal 출력 서식 지정

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

이 예제에서는 통화 서식 문자열을 사용하여 출력 서식을 지정합니다. x는 소수 자릿수가 $0.99를 초과하기 때문에 반올림됩니다. (통화 서식 때문에 1.00 으로 처리됨 => :C 를 제거 하면 소수부가 모두 표시됩니다)
최대 자릿수를 나타내는 변수 y는 올바른 서식으로 정확하게 표시됩니다.

C#
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
*/



ref : https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/decimal



반응형

+ Recent posts