본문 바로가기

프로그래밍 언어/코틀린_Kotlin_더파기

Kotlin더파기_08_Number 숫자

코틀린은 숫자를 처리하기 위한 숫자 타입의 클래스를 가지고 있다. 

 

Byte (8비트)

Short (16비트)

Int (32비트)

Long (64비트)

Float (32비트)

Double (64비트)

 

숫자 타입의 특징

 

  • 정수와 실수로 나눌 수 있다.
  • 양수, 음수를 나타내는 부호를 갖는다.
  • 메모리에 할당되는 비트수가 다르므로 다룰 수 있는 최대,최소값이 다르다.

 

kotlinlang.org

Byte, Short타입은 자주 사용하지 않는다.

Int타입에 저장할 수 있는 가장 큰 수가 21억4천7백만 정도이므로

대부분의 경우는 숫자 타입을 Int로 사용하면 되고 더 큰 수는 Long을 사용한다.

Long 타입은 수학,과학 프로그램이나 게임 등의 시간을 계산할 때 사용한다.

소수점 있는 숫자는 Double을 사용하면 된다.

 

문자열 타입의 변환

 

문자열(String)타입의 숫자를 숫자타입으로 변환하는 함수들 중 많이 사용하는 것은 다음과 같다.

 

toFloat

toDouble

toLong

toBigDecimal

toDoubleOrNull

toIntOrNull

 

끝에 OrNull이 붙어 있는 함수는 서로 다른 숫자끼리 변환할 때 예외에러가 날 경우 null값을 반환한다.

 

연습 코드

 

숫자를 사용하는 코드를 작성해 보자.

 

변수 customerMoney(고객돈)에 Int(정수) 10을 초기값으로 넣는다.

변수 customerCash(고객현금)에 Int(정수) 10을 초기값으로 넣는다.

 

placeOrder(주문)함수를 만든다.

buy(구입)함수는 displayBalance(잔액 표시)함수를 호출한다.

 

main함수에서 menuData의 형식에 맞게 주문하면 아래와 같은 결과가 나온다.

 

메인함수에서 price(가격)은 전달했는데 사용하지 않았다.

이제 price(가격) 정보를 buy함수에서 호출하도록 매개변수를 수정하자.

 

 

가격이 소수점이 있는  2.82 이므로 매개변수 price의 타입은 Double로 한다.

그리고 placeOrder함수의 buy()에서 price를 전달하면 빨간줄 에러가 나타난다.

왜냐하면 placeOrder함수에서 price값은 String(문자열) 값인데

전달하려는 buy()함수는 price 타입이 Double이기 때문이다.

그러므로 buy()함수가 받을 수 있는 타입으로 변환해서 전달해야 한다.

 

실행하면 위와 같이 나타난다.

구입했으니까 손님 지갑 잔액이 줄어야 한다.

 

 

남은 현금은 소수점 둘째자리까지 표시되어 나타난다.

만약 소수점 첫째 자리까지 표시하고 싶으면 String타입의 format함수를 사용하면 된다.

 

문자열 탬플릿 $ 다음에 중괄호를 사용하여 함수 표현식을 사용한다.

"%.1f" 는 format함수를 호출할 때 데이터의 형식을 정의하는 형식문자열이다. 

위 형식은 소수점 이하 첫째 자리까지 반올림하는 것으로 정의한다.

format함수에 변수 remainingBalance를 인자로 전달했다.