Programming

유니티 게임 돈 표시 만 억 조 경 해 표시 방법

DragonTory 2021. 4. 7. 17:23
반응형

게임에서 돈표시를 콤마 대신 

"만 억 조 경 해"로 표시 할 일이 있어 방법을 찾아 봤다.

돈 표시

예전에 cpp 할 때는

1000 10000  100000000 과 같이

숫자로 나누고 반복 해서  자릿 수를 끼어 넣어 표시 하곤 했는데

C#에서 스트링 포맷으로 하니 간결 하고 편하고 좋다.

 

“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class MoneyUnitString
{
    static string[] unitSymbol = new string[] { """만""억""조""경""해" };
 
    // long 보다 double이 최대 값이 커서 double  사용
    public static string ToString(double value)
    {
        if( value == 0 ) { return "0"; }
            
        int unitID = 0;
            
        string number = string.Format("{0:# #### #### #### #### ####}", value).TrimStart();
        string[] splits = number.Split(' ');
 
        StringBuilder sb = new StringBuilder();
 
        for (int i = splits.Length; i > 0; i--)
        {
            int digits = 0;
            if (int.TryParse(splits[i - 1], out digits))
            {
                // 앞자리가 0이 아닐때
                if (digits != 0)
                {
                    sb.Insert(0, $"{ digits}{ unitSymbol[unitID] }");
                }
            }
            else
            {
                // 마이너스나 숫자외 문자
                sb.Insert(0, $"{ splits[i - 1] }");
            }
            unitID++;
        }
        return sb.ToString();            
    }
}
cs

 

여기에 Extension Method를 사용 하면

해당 데이터 타입 구조체의 메소드로 사용 할 수 있다. 

 

1
2
3
4
5
6
7
public static class Extensions
{
    public static string ToMoneyString(this long target)
    {
        return MoneyString.ToString(target);
    }
}
cs

 

long money = 12345678900;

print( money.ToMoneyString() );

 

위와 같이 사용 가능 하다. 

 

참 편하고 좋은 C# 되겠다.

 

Unity Money Display

반응형