연산시, 자료형의 데이터형을 유의해야 한다.[240306_짧은_TIL]

Bettor·2024년 3월 6일
3

짧은_TIL

목록 보기
1/1

'짧은 TIL'이란 당일에 배운 길지 않은 내용들을 다루며, 언제든 삭제될 수 있습니다.

Q1. 이 둘의 차이점은?

num1.toDouble() / num2.toDouble() * 1000.toInt()
(num1.toDouble() / num2.toDouble() * 1000).toInt()

정답 : Double, Int

풀이 :

1번에서 Double에서 Double을 나누면 Double 타입이고, 1000은 이미 Int 타입인데 또 .toInt()를 하는 것은 의미가 없는 코드이며, Double과 1000(Int)을 곱하는 상황이므로 바이트 수가 더 크며 데이터 범위가 더 넓은 Double 타입으로 지정된다.
2번은 '(num1 ~'부터 '1000)' 까지 1번 코드와 치환할 수 있기 때문에 Double을 .toInt() 해야하는 상황이므로 Int 타입이 된다.

Q2. 해당 코드의 Type과 Value는?

fun main() {
    val divNumber1 = 3 / 2
    val divNumber2 = 3.0 / 2
    val divNumber3 = 3 / 2.0
    val divNumber4 = 3.0 / 2.0
            
    println("divNumber1 = type: ${divNumber1.javaClass}, value: $divNumber1") // 1. type, value
    println("divNumber2 = type: ${divNumber2.javaClass}, value: $divNumber2") // 2. type, value
    println("divNumber3 = type: ${divNumber3.javaClass}, value: $divNumber3") // 3. type, value
    println("divNumber4 = type: ${divNumber4.javaClass}, value: $divNumber4") // 4. type, value
}

정답 :

/*
divNumber1 = type: int, value: 1
divNumber2 = type: double, value: 1.5
divNumber3 = type: double, value: 1.5
divNumber4 = type: double, value: 1.5
*/

풀이 :

1번은 Int 나누기 Int니까 Int 타입이고 소수점을 표현하지 않으니 1이다.
2번은 Double 나누기 Int니까 Double 타입이고 소수점을 표현하니 1.5이다.
3번은 식은 다르지만 계산 방식은 동일하게 적용되어 Int 나누기 Double 이므로 Double 타입이면서 1.5이다.
4번은 둘다 Double이니까 Double이고 1.5이다.

0개의 댓글