본문 바로가기

C#

2022.11.02.TIL

decimal형과 float형은 접미사가 필요함

decimal d = 1.234m;
float f = 1.23455f;

C#도 문자열과 더하면 자동변환

 

 

WriteLine안에 {}를 통해 출력 폼을 정해줄 수 있다. (각 {}안에는 ,뒤의 객체들이 들어감)

String.Format을 이용하여 해당 문자열을 문자열에 저장할 수 있다.

using System;

namespace asd
{
	class Program
    {
    	static void Main(string[] args)
        {
        	Console.WriteLine("10 이하의 소수: {0}, {1}, {2}, {3}",2,3,5,7);
            
            string primes;
            primes = String.Format("10 이하의 소수: {0}, {1}, {2}, {3}",2,3,5,7);
            Console.writeLine(primes);
        }
    }
}

 

C#은 자료형이 다른 변수들을 함께 출력할 수 없다.

int v1 = 100;
double v2 = 1.23;
Console.WriteLine(v1, v2);
//불가

 

ToString() 혹은 문자열과의 더하기로 출력해야함.

폼을 통해서 출력할 수도 있음

$를 이용하는 방법도 있다. {}안에 변수 넣기

Console.WriteLine(v1.ToString() +  "," + v2.ToString());
Console.WriteLine("v1 = {0}, v2 = {1}",v1,v2);
Console.WriteLine($"v1 = {v1}, v2 = {v2}");

 

형식지정자(Axx로 정밀도를 지정할 수 있으나 정밀도는 선택사항임)

c: 통화

d: 십진수(최소 자릿수 지정)

e: 지수(과학)

f: 고정자릿수

g: 유효자릿수

n: 천단위 구분 기호

p: 퍼센트

r: 라운드 트립

x: 16진수

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(
                "(C) Currency: {0:C}\n" +
                "(D) Decimal: {0:D}\n" +
                "(E) Scientific: {1:E}\n" +
                "(F) Fixed point: {1:F}\n" +
                "(N) Number: {0:N}\n" +
                "(P) Percent: {1:P}\n" +
                "(R) Round-trip: {1:R}\n" +
                "(X) Hexadecimal: {0:X}\n",
                -12345678,-1234.5678f
                );

        }
    }
}
///////출력//////////////////////////////////////////////
(C) Currency: -\12,345,678
(D) Decimal: -12345678
(E) Scientific: -1.234568E+003
(F) Fixed point: -1234.57
(N) Number: -12,345,678.00
(P) Percent: -123,456.80%
(R) Round-trip: -1234.56775
(X) Hexadecimal: FF439EB2
decimal value = 123456.789m;
Console.WriteLine("잔액은 {0:C2}원 입니다.", value);
Console.WriteLine("잔액은 {0,20:C2}원 입니다.", value);//해당 형식지정자는 20자리를 차지하고 남는부분은 앞부분에 빈칸으로 채워짐
///출력///
잔액은 \123,456.79원 입니다.
잔액은          \123,456.79원 입니다.

커스텀 형식지정자

#: 0이 앞에 붙지 않음

0: 0이 앞에 붙음

. : 소수점

, : 천 자리

; : 섹션 구분 기호

ex) {"#,#.##"} : 세 자리마다 콤마 표시를 하고 소수점 두 자리 까지 표시

섹션구분기호: 숫자를 표시할 때 양수, 음수, 0의 값을 세미콜론으로 구분하여 제각기 다른 포맷으로 출력할 수 있다.

 

실수 표현의 차이

float: 유효 숫자가 7자리, 가장 빠름, decimal보다 더 크거나 작은 값 표현 가능, 접미사 필요

double: 유효 숫자가 15~16자리,  decimal보다 더 크거나 작은 값 표현 가능, 접미사 필요 없음(default)

decimal: 유효 숫자가 28~29자리(금융 프로그램에서 반드시 사용), 가장 느림, 접미사 필요

 

문자열 숫자 변환

Parse(), TryParse(): 변환 실패 시 Parse는 에러, TryParse는 false를 반환

ex) Int32.Parse(문자열)/...double.TryParse(문자열)...

Convert.ToDouble(), Convert.ToInt32()로 같은 역할 수행 가능

Convert는 문자열 뿐 만 아니라 다른 여러 자료형 사이의 변환도 지원함

ex) Convert.ToString(num,2) num을 2진수로 변환, Convert.ToInt32(dnum,2) 2진수 문자열 dnum을 정수로 변환

 

오버플로우 오류를 잡기 위해선 checked 키워드를 사용해야함

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int X = int.MaxValue, y = 0;

            checked
            {
                try
                {
                    y = X + 10;
                }
                catch(Exception e)
                {
                    Console.WriteLine(e.Message);
                }
                Console.WriteLine(y);
            }
        }
    }
}

 

XOR연산자 ^가 있다.

 

string은 불변

string 클래스의 메소드들:

insert

Contains

CompareTo

IndexOf: 특정 문자가 처음 등장하는 위치 반환

LastIndexOf: 특정 문자가 처음 등장하는 마지막 위치 반환

PadLeft: string 앞에 특정 문자를 삽입하여 글자 수를 맞춥니다.

PadRight: string 뒤에 특정 문자를 삽입하여 글자 수를 맞춥니다.

Remove: string에서 substring 삭제

Replace: 문자 혹은 substring을 다른 문자 혹은 substring으로 대체

ToLower

ToUpper

Trim: 앞뒤 공백or특정문자 제거

TrimEnd: 뒤의 공백or특정문자 제거

TrimStart: 앞의 공백or특정문자 제거

Split

CopyTo: 복사(=쓰면 같은 객체가 됨)

Substring: 특정 문자에서 끝까지의 substring 추출

 

정적 메소드(String.메소드() 형태로 사용)

Concat: 한 개 이상의 substring을 합쳐서 새로운 string을 만든다.

Compare

Copy

Format: 문자열을 format에 맟추어 변경

Join: 문자열 배열을 모아 문자열을 만든다, 구분자 추가 가능

 

분리할 구분자를 여러개 사용 가능

char[] delimiters = {',',' ','-'};
string[] v = s.Split(delimiters);

 

 

'C#' 카테고리의 다른 글

2022.11.01.TIL  (0) 2022.11.01