Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/유니티C#

Unity c#) 문자열로 된 수식 계산하기.

UniCoti(유니코티) 2023. 12. 17.

계산기 같은 것을 유니티로 만들다 보면 문자열로 된 수식을 계산해야 한다.

물론 문자열을 +, - , * , / 등으로 쪼개서 float로 변환해서 어떻게 할 수도 있겠지만

전문적으로 할게 아닌 간단히 구현할 것이라면 이 방법이 나을 것이라고 생각한다.

 

일단 이 글에서 소개할 메서드는 DataTableCompute( )이다.

이 메서드는 앞서 말했듯 문자열로 된 수식을 계산해 주는 기능을 가진다.

예시를 보자.


1. 기본 세팅

using System;
using System.Data;

public class scriptName : MonoBehaviour
{
    DataTable dt;

    // Start is called before the first frame update
    void Start()
    {
        dt = new DataTable();
    }
    
}

 

DataTable을 문자열을 계산하기 위한 용도로만 세팅한다면 위와 같이 하면 된다.

 

먼저, 네임스페이스 2개를 추가해 준다. 

(using System, System.Data)

 

그리고 변수를 하나 만들어준다. (클래스는 DataTable)

이후 StartAwake에서 빈 DataTable을 새로 만들고, 저장하면 된다.

이제 dt.methond() 형식으로 DataTable을 사용할 수 있게 된다.


2. 사용, 예시

사용하려면, dt.Compute("계산식", "필터"); 로 입력하면 된다.

여기서 "필터"는 dataTable의 원래 기능인 데이터들이 들어가 있을 때

사용하기 위한 것이다. 우리는 문자열을 계산하기 위해서 사용하기 때문에

필터는 아무것도 거르지 않기 위해 "" (빈 문자열)로 작성하면 된다.

 

dt.Compute("5*4*3*2*1", "");
----> 120

 

 

예시를 보자면 이런 식이다. 계산할 문자열 식을 첫 번째 파라미터로 넣으면

object 형식으로 계산된 값이 반환된다. object 타입으로 반환되기에

floatint 혹은 바로 string으로 변환해서 사용하면 된다. (타입을 고려해야 할 경우)


여기까지 문자열로 된 수식을 계산하는 방법에 대해서 알아보았다.

이 검색어로 구글에 쳐보면 대부분 코딩 테스트 같은 문제로

이런 알고리즘을 짜는 것들이 나오는 걸 볼 수 있었다.

 

그래서 이러한 정보도 주고 싶어 작성한 글이며, 예전에 javasscript를 배울 때

eval()이라는 메서드를 본 적이 있어서 이 기능을 유추할 수 있었던 것 같다.

과거의 경험이 중요하다고 느끼기도 했다.

 

https://learn.microsoft.com/ko-kr/dotnet/api/system.data.datatable.compute?view=net-8.0 (공식문서)

 

DataTable.Compute(String, String) 메서드 (System.Data)

필터 조건을 전달하는 현재 행에서 지정된 식을 계산합니다.

learn.microsoft.com

 

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com



이상으로 도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글