BigInteger란?

BigInteger는 매우 큰 정수를 나타낼 때 사용되는 .NET의 데이터 타입이다. System.Numerics 네임스페이스 안에 정의되어 있으며, 기본적인 정수 타입으로 표현할 수 없는 매우 큰 수를 다룰 때 유용하다. BigInteger를 사용하기 위해서는 먼저 System.Numerics 네임스페이스를 참조해야 한다.

사용법

클리커 게임에서는 게임을 진행함에 따라 숫자가 말로 표현하기 어려울 정도로 커지게 된다.
이 경우 기존 자료형들로는 표현하기 불가능해지는 경우가 생긴다. 하지만 이런 숫자들이 BigInteger를 통해 올바르게 저장되고 표현될 수 있는 것이다.

이렇게 커진 숫자를 아래와 같이 사용했다.

    private string[] goldUnitArr = new string[] { "", "K", "M", "B", "T", "Qa", "Qi", "Sx", "Sp", "Oc", "No", "Dc", "Ud", "Dd", "Td", "Qad", "Qid", "Sxd", "Spd", "Od", "Nd", "Vg", "Uvg", "Dvg", "Tvg", "Qavg", "Qivg", "Sxvg", "Spvg", "Ovg", "Nvg", "Tg", "Utg", "Dtg", "Ttg", "Qatg", "Qitg", "Sxtg", "Sptg", "Otg", "Ntg", "Qag", "Uqag", "Dqag", "Tqag", "Qaqag", "Qiqag", "Sxqag", "Spqag", "Oqag", "Nqag", "Sg", "Usg", "Dsg", "Tsg", "Qasg", "Qisg", "Sxsg", "Spsg", "Osg", "Nsg", "Og", "Uog", "Dog", "Tog", "Qaog", "Qiog", "Sxog", "Spog", "Oog", "Nog", "Ng", "Ung", "Dng", "Tng", "Qang", "Qing", "Sxng", "Spng", "Ong", "Nng", "Cg" };


    public string GetEnergyAmount()
    {
        int placeN = 3;  // 끊어서 보여줄 자리수
        BigInteger value = energyAmount;
        List<int> numList = new List<int>();
        int p = (int)Mathf.Pow(10, placeN); // 끊어서 보여줄 자리수를 만들기 위해 10의  제곱값을 구함

        do
        {
            numList.Add((int)(value % p));  // 3자리씩 끊어서 리스트에 추가 (ex. 1234567890 -> 890, 456, 123)
            value /= p; // 저장된 구간 제외하기 위해 나눔
        }
        while (value >= 1); // 3자리씩 끊어서 나눈 값이 1 이상일 때는 반복

        string retStr = "";

        if (numList.Count < 3)
        {
            for (int i = numList.Count - 1; i >= 0; i--)
            {
                retStr = retStr + numList[i].ToString() + goldUnitArr[i];
            }
        }
        else
        {
            for (int i = numList.Count - 1; i >= numList.Count - 3; i--)
            {
                retStr = retStr + numList[i].ToString() + goldUnitArr[i];
            }
        }

        return retStr;
    } 

이렇게 코딩을 해서 텍스트에 표시해주면 앞에서 3자릿 수까지만 표시되기 때문에 사실상 무의미해지는 작은 단위의 숫자를 무시하고, 게임 내 유효한 값들을 효과적으로 표시해줄 수 있다.

profile
스터디 로그

0개의 댓글

관련 채용 정보