C#에서 실수를 저장할 수 있는 변수로 double과 decimal이 자주 사용됨.
double은 부동소수점 방식을 이용하고, decimal은 고정소수점 방식을 이용함
- double은 64비트(8바이트)크기에, 약 15~16 자리의 유효숫자를 가진다. decimal에 비해 연산이 빠르기에 대부분의 경우 사용됨.
- decimal은 128비트(16바이트)크기에 28~29 자리의 유효숫자를 가진다. 정밀한 계산이 필요한 금융, 세금, 과학 등의 분야에서 사용됨.
double d = 1.1 + 2.2; // d = 3.3000000000000003
decimal m = 1.1M + 2.2M; // m = 3.3
double의 경우 비교연산을 사용하면 예상 결과 나오지 않는다. 이는 double 은 이진수로 저장되기 때문에, 0.1과 0.2를 더한 결과인 0.30000000000000004와 0.3이 서로 같지 않다고 판단되기 때문.
반면, decimal은 고정 소수점 방식으로 10진수로 저장되기 때문에 더 정확한 결과를 보장한다.
double value = 0.1 + 0.2;
if (value == 0.3)
{
Console.WriteLine("value는 0.3과 같습니다.");
}
else
{
Console.WriteLine("value는 0.3과 같지 않습니다."); // 출력
}
decimal value = 0.1m + 0.2m;
if (value == 0.3m)
{
Console.WriteLine("value는 0.3과 같습니다."); // 출력
}
else
{
Console.WriteLine("value는 0.3과 같지 않습니다.");
}
'프로그래밍 > C# (WinForms)' 카테고리의 다른 글
C#, WinForms ] 계산기 구현 (0) | 2023.02.25 |
---|---|
C#, WinForms ] label의 너비를 초과하는 글자 자르기 (0) | 2023.02.25 |
C#, WinForms ] MessageBox 속성 (0) | 2023.02.25 |
C#, WinForms ] textBox 크기에 맞춰서 Font Size 조절하기, resize the font to fit in the texBox (0) | 2023.02.25 |
C#, WinForms ] 천 단위로 콤마 넣기, separate Numbers with commas (0) | 2023.02.25 |