Diary
카테고리
작성일
2024. 12. 11. 15:45
작성자
yul s
반응형

 

 

 

 

큰 숫자를 간략하게 표현하기 위해 지수형태로 바꿀 필요가 생겼다

 

대강 1000이 넘으면 1.00e3으로 표현되게 만들생각이다

 

 

MA_text.text = "You have " + MA.ToString("F0") + " matters (MA)";

 

 

먼저 이부분을 바꿔보는데

 

조건문으로 MA가 1000 이상일때와 아닐때로 나누어주었다

 

 

if (MA < 1000)
        {
            MA_text.text = "You have " + MA.ToString("F0") + " matters (MA)";
        }
        else
        {
            var exponent = (Math.Truncate(Math.Log10(Math.Abs(MA))));
            MA_text.text = "You have " + (MA / Math.Pow(10, exponent)).ToString("F2") + "e" + exponent + " matters (MA)";
        }

 

 

 

1000 이하일때는 기존과 같고

 

그게 넘으면 exponent를 계산하여 축소시키는 방식

 

 

 

 

 

 

 

 

숫자가 작을때는 정수로 나오고 1000을 넘으니 지수적표현으로 바뀌는 모습이 보인다

 

제대로 작동하는듯 ㅎ

 

근데 바로 위에 99s 라는 글자가 거슬린다

 

1m 39s 같은 형태가 더 자연스러울듯

 

 

 

 

뭐 비슷한 방식으로 1d 6h 30m 22s 같은 모양으로 나올수있게 만들었다

 

 

if (timeleft < 60)
        {
            Time_text.text = "You stay here for " + timeleft.ToString("F0") + "s";
        }
        else if (timeleft >=60 && timeleft < 3600)
        {
            Time_text.text = "You stay here for " + Math.Truncate(timeleft/60).ToString("F0") + "m " + (timeleft % 60).ToString("F0") + "s";
        }
        else if (timeleft >=3600 && timeleft < 86400)
        {
            Time_text.text = "You stay here for " + Math.Truncate(timeleft/3600).ToString("F0") + "h " + (Math.Truncate(timeleft / 60) % 60).ToString("F0") + "m " + (timeleft % 60).ToString("F0") + "s";
        }
        else
        {
            Time_text.text = "You stay here for " + Math.Truncate(timeleft/86400).ToString("F0") + "d " + (Math.Truncate(timeleft/3600) % 24).ToString("F0") + "h " + (Math.Truncate(timeleft / 60) % 60).ToString("F0") + "m " + (timeleft % 60).ToString("F0") + "s";
        }

 

 

 

 

실험삼아 100000초를 입력하고 실행해보니

 

 

 

 

 

1d 3h 46m 정도로 표현되는데

 

계산해보니 맞는듯하다

 

이후에는 나머지들 양식 복붙해서 수정해주는 작업인데...

 

전부 일일히 바꾸려니 노가다 하는 기분이었다

 

 

 

 

 

전부다 수정하고나서

 

테스트해보니 큰 문제는 없는듯하다

 

 

 

 

반응형