도드넷
C# 소숫점 처리 - 소수점 첫째자리 둘째자리 올림 반올림! (Feat. 유니티) 본문
C# 다양한 소숫점 처리 하는 방법
- C#에서 소숫점(소수점) 첫째자리 둘째자리 까지만 표시하기
소숫점 반올림 올림 내림 자르기 하는 방법 총 정리!
(feat. 유니티)
1. 소숫점 자리 표시 string.Format
포멧함수는 꽤나 유용한 개꿀함수다.
예를들어 유닛의 현재 체력을 표시해야하는데
float 으로 152.38537 이다.
이걸 다 UI에 표시하면 너무 길고 복잡해보인다. @_@;
이걸 만약
현재체력표시기.text = string.Format("{0:0.#}", 152.38537);
처리를 해주면 152.4 (자동 반올림) 으로 표시된다.
이 함수가 좋은점은 if 없이도 소숫점이 없으면 그냥 152를 표시하고
있으면 지정된 자릿수까지만 반올림 표시한다.
만약 두자릿수 까지 표시하고 싶다면
string.Format("{0:0.##}, ...)" 으로 하면 된다.
만약 0 도 강제로 표시하고 싶으면 string.Format("{0:0.0}", ...) 으로 하면 된다.
(ms 시간제한 타이머 표시같은 경우)
2. 소숫점 자르기 Math.Truncate
내림, 자르기 함수다.
1번 함수 같은경우 반올림이 자동으로 내장되어 있는데 만약 체력이 33.1921 이면
string.Format("{0:0.#}", 33.1921) 을 처리하면 33.2 라고 표시한다.
뭐 체력같은경우는 33.19 나 33.2 나 별차이없는데 내가 만들고 있는 게임은 턴제 CRPG라
"현재 남아있는 행동력(AP)"도 표시해야 하는데
0.9 와 1 의 차이는 스킬을 쓰고 못쓰고 차이 이므로 막 반올림을 하면 안된다. -_-;
그때는 자르기 함수 Math.Truncate 로 처리해 줘야한다.
(주의 : using System; 참조 필요함.)
현재 행동력이 0.985 이다.
float 표시해야할_행동력값 = (float)(Math.Truncate(0.985 * 10) / 10);
해주면 소숫점 첫째 자리 빼고 다 잘라버린다.
즉 0.985 가 0.9가 된다.
(표시용으로 값을 복사하므로 수정해도 무상관)
여튼 이걸 다시 string.Format("{0:0.#}", 표시해야할_행동력값)
해주면 문제없이 표시된다.
첫째자리 까지 만 자르기 : Math.Truncate(수정할_값 * 10) / 10
둘째자리 까지 만 자르기 : Math.Truncate(수정할_값 * 100) / 100
...
3. 가장 간단한 (int) 처리
(int)(2343.9422) = 2343
소숫점은 그냥 무자비하게 내림, 잘라버린다.
쉽고 깔끔하고 간단한 값 표기 방법이다. 하지만 1 이하 단위가 몽땅 0이 되므로
1이하 값으로 떨어지는 경우 혹은 소숫점 단위까지 필요한 세밀한 값의 경우 사용에 주의해야한다.
4. Floor 올림처리 (무조건 가장 큰 정수로)
일반 C# (using System 참조) : Math.Floor(382.19348) = 383
유니티 C# : Mathf.Floor(382.19348) = 383
5. Round 반올림 처리 (#.5 부터 ↑)
일반 C# (using System 참조) : Math.Round(1.5) = 2
유니티 C# : Mathf.Round(1.4) = 1
ㅇ_ㅇ)/
포니조아!
'창고 > 게임 개발 [Hidden]' 카테고리의 다른 글
유니티 color tag 컬러테그 - Unity rich text 색상코드 모음. (0) | 2020.07.23 |
---|---|
유니티 변수 숨기기 조건부? [HideInInspector]을 넘어서.. (0) | 2020.07.07 |
유니티 모바일 로딩시간 - 씬 불러오는 시간 줄이기 (0) | 2019.12.13 |
유니티 회전 Rotation 스크립트로 설정하는 법 (0) | 2019.11.17 |
C# 객체 복사하는 법 - 주소가 아닌 값 복사하기. (0) | 2019.11.07 |