온도 변환
이 연습에서는 화씨에서 섭씨로, 다시 화씨에서 섭씨로 온도를 변환합니다.
화씨에서 섭씨로 변환하려면 다음과 같이 하세요:
- 화씨 온도에서 32를 빼는 것으로 시작합니다.
- 답을 9로 나눕니다.
- 마지막으로 5를 곱하면 섭씨 온도가 나옵니다.
C = ((F - 32) / 9) * 5
섭씨를 화씨로 변환하려면 다음과 같이 하세요:
- 먼저 섭씨 온도에 9를 곱합니다.
- 답을 5로 나눕니다.
- 마지막으로 32를 더하면 화씨 온도가 나옵니다.
F = (C * 9) / 5 + 32
문제 1 - Int를 사용한 온도 계산
Exercise7이라는 이름의 새 2D Unity 프로젝트를 생성합니다. SampleScene의 이름을 Scene0으로 바꿉니다. Scripts 폴더를 추가하고 ConvertTemperatures라는 이름의 새 C# 스크립트를 추가합니다.
스크립트를 열고 스크립트 상단에 있는 코멘트를 입력한 다음 Update 메서드를 삭제합니다. Start 메서드에 다음 코드를 추가합니다:
- 화씨로 표시되는 원래 온도, 섭씨로 표시되는 계산된 온도, 화씨로 표시되는 계산된 온도(섭씨에서 다시 화씨로 변환할 때)를 저장하기 위해 int 변수를 세 개 선언합니다.
- 화씨 단위의 원래 온도를 0으로 지정하고 해당 화씨 값을 인쇄하고, 섭씨로 변환하여 섭씨 값을 인쇄한 다음 섭씨 값을 다시 화씨로 변환하여 화씨 값을 인쇄합니다. 숫자만 인쇄하지 말고 각 출력에 레이블을 지정하세요
- 원래 온도를 화씨로 32를 지정하고 화씨 값을 인쇄한 다음 섭씨로 변환하여 섭씨 값을 인쇄한 다음 섭씨 값을 다시 화씨로 변환하여 화씨 값을 인쇄합니다. 숫자만 인쇄하지 말고 각 출력에 레이블을 지정하세요.
- 원래 온도를 화씨로 212를 지정하고 화씨 값을 인쇄한 다음 섭씨로 변환하여 섭씨 값을 인쇄한 다음 섭씨 값을 다시 화씨로 변환하여 화씨 값을 인쇄합니다. 숫자만 출력하지 말고 각 출력에 레이블을 지정하세요.
씬의 메인 카메라에 스크립트를 첨부하고 게임을 실행하면 콘솔 창에서 출력을 확인할 수 있습니다.
0에서 섭씨로 변환했다가 다시 화씨로 변환하면 최종 화씨 온도가 0이 아니라 5가 되는 것을 확인할 수 있습니다. 이것이 이 연습의 요점 중 하나입니다! 사용한 데이터 유형과 해당 데이터 유형이 주어졌을 때 왜 이런 결과가 나올 수 있는지 생각해 보세요.
문제 2 - 플로트를 사용한 온도 계산
이미 추가한 코드 뒤에 Start 메서드에 다음 코드를 추가합니다:
- 화씨로 표시되는 원래 온도, 섭씨로 표시되는 계산된 온도, 화씨로 표시되는 계산된 온도(섭씨에서 다시 화씨로 변환할 때)를 저장하는 float 변수를 세 개 선언합니다.
- 화씨 단위의 원래 온도를 0으로 지정하고 해당 화씨 값을 인쇄하고, 섭씨로 변환하여 섭씨 값을 인쇄한 다음 섭씨 값을 다시 화씨로 변환하여 화씨 값을 인쇄합니다. 숫자만 출력하지 말고 각 출력에 레이블을 지정하세요.
이제 0에서 섭씨로, 다시 화씨로 변환하면 0에 가까워지지만 여전히 정확히 0은 아닙니다. 부동 소수점 숫자는 연속 영역에서 실수의 근사치이지만 정수에 비해 정밀도가 더 높다는 점을 기억하세요. int 변수 대신 float 변수를 사용했을 때 최종 화씨 온도가 더 가까워진 이유가 바로 여기에 있습니다.
문제 3 - 더블을 사용한 온도 계산
이미 추가한 코드 뒤에 Start 메서드에 다음 코드를 추가합니다:
- 화씨로 표시된 원래 온도, 섭씨로 표시된 계산된 온도, 화씨로 표시된 계산된 온도(섭씨에서 화씨로 다시 변환할 때)를 저장하기 위해 double 변수를 세 개 선언합니다.
- 화씨 단위의 원래 온도를 0으로 지정하고 해당 화씨 값을 인쇄하고, 섭씨로 변환하여 섭씨 값을 인쇄한 다음 섭씨 값을 다시 화씨로 변환하여 화씨 값을 인쇄합니다. 숫자만 출력하는 것이 아니라 각 출력에 레이블을 지정해야 합니다.
마지막으로 0을 섭씨에서 화씨로, 다시 화씨로 변환하면 원래 예상한 대로 0이 출력됩니다. double 데이터 유형은 float 데이터 유형보다 더 많은 바이트를 사용하기 때문에 floats를 사용할 때 발생했던 반올림 오류가 발생하지 않습니다.
이 연습은 특히 여러 계산을 수행할 때 데이터 유형이 실제로 얼마나 중요한지 보여줍니다.
데이터 타입별 비트수가 다르고, int < float < double 로 갈수록 더 정밀한 계산이 가능하다.
'코딩 공부 > Unity C#' 카테고리의 다른 글
C# 클래스 생성자 사용 및 속성 (0) | 2024.06.03 |
---|---|
클래스 및 객체 (0) | 2024.06.03 |
float를 사용한 삼각법 (0) | 2024.06.02 |
변수와 상수 선언 및 상수 계산 -3- (1) | 2024.06.02 |
Unity 데이터 유형 변수 및 상수 -2- (0) | 2024.06.02 |