코딩 공부/Unity C#

변수와 상수 선언 및 상수 계산 -3-

recordmastd 2024. 6. 2. 05:57

실수 데이터 유형 표현

- float, double을 사용한다.

게임 개발에서는 주로 float를 사용. double은 float보다 2배의 비트 수를 사용하여 더 넓은 범위의 수를 표현할 수 있다. 

Excercise
문제 - 상수 및 변수 선언 및 사용하기

Exercise5라는 이름의 새 2D Unity 프로젝트를 생성합니다. SampleScene의 이름을 Scene0으로 변경합니다. Scripts 폴더를 추가하고 PrintPercent라는 이름의 새 C# 스크립트를 추가합니다.

스크립트를 열고 스크립트 상단에 있는 코멘트를 입력한 다음 Update 메서드를 삭제합니다. Start 메서드에 다음 코드를 추가합니다:

  1. int 유형의 MaxScore 상수를 선언하고 값 100을 할당합니다.
  2. int 유형의 score 라는 변수를 선언하고 0에서 100 사이의 값을 할당합니다.
  3. float 유형의 percent 라는 변수를 선언하고 scoreMaxScore 으로 나누어 계산한 백분율을 저장합니다. C#에서 정수 나누기가 어떻게 작동하는지 기억하고 적절하게 타입 캐스팅을 사용합니다.
  4. Unity 콘솔 창에서 퍼센트를 출력합니다. 인쇄하는 퍼센트는 0%에서 100% 사이여야 합니다.

씬의 메인 카메라에 스크립트를 첨부하고 게임을 실행하여 콘솔 창에서 출력을 확인합니다.

 

타입캐스팅

(데이터유형)변수명, ex. (float)score

데이터 유형을 괄호 안의 유형으로 변환해준다. Convert.ToXxx는 메서드이고 타입캐스팅은 아님.

// dps를 계산할 때와 유사한 상황

int score = 1320;
int totalSecondPlayed = 10000;

float pointsPerSecond = score / totalSecondPlayed;
Console.WriteLine(pointsPerSecond);

 

위 코드를 실행하면 답은 0이 나온다. int타입 데이터를 나눴기 때문에 소수점 아래의 수는 포함되지 않는다.

int score = 1320;
int totalSecondPlayed = 10000;

// 타입캐스팅으로 score의 데이터 타입을 int에서 float으로 변환
float pointsPerSecond = (float)score / totalSecondPlayed;
Console.WriteLine(pointsPerSecond);

위와 같이 코드를 변경하면 소수점 아래 수가 반영된 정답이 나온다.

답을 도출하기 위해 기존 score변수의 데이터 유형을 바꾸는 것은 매우 나쁜 방법이다.

따라서 타입캐스팅으로 pointsPerSecond의 계산식에 있는 score의 데이터 유형만 float로 바꿔준다.

 

 

답안작성

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        int MaxScore = 100;
        int Score = 40;
        float Percent = ((float)Score / MaxScore) * 100;

        Debug.Log(Percent + "%");	// console을 쓰지 않도록 주의!
    }

    // Update is called once per frame
    void Update()
    {
        // 이 문제에서는 필요없으므로 삭제해도 문제X
    }
}

위와 같이 쓴 코드를 유니티에서 실행시키면 콘솔창에 40%가 뜬다.