Kotlin - String을 Double으로 변환

코틀린에서 String을 Double으로 변환하는 방법을 소개합니다.

String.toDouble()

String.toDouble()는 문자열을 Double으로 변환하여 리턴합니다.

fun main(args: Array<String>){

    val str: String = "1234.5678"

    val num: Double = str.toDouble()

    print("num : $num")
}

Output:

num : 1234.5678

NumberFormatException

toDouble()은 숫자가 아닌 문자열을 변환할 때 NumberFormatException이 발생시킵니다.

fun main(args: Array<String>){

    val str: String = "1234.5678a"

    val num: Double = str.toDouble()
}

Output:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1234.5678a"
	at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
	at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
	at java.base/java.lang.Double.parseDouble(Double.java:543)

다음과 같이 예외처리가 필요합니다.

fun main(args: Array<String>){

    val str: String = "1234.5678a"

    try {
        val num: Double = str.toDouble()
        print("num : $num")
    } catch (e: NumberFormatException) {
        println("Not number: $str")
    }
}

Output:

Not number: 1234.5678a

String.toDoubleOrNull()

String.toDoubleOrNull()은 문자열을 Double으로 변환하여 리턴합니다. 만약 문자열이 숫자가 아닐 때는 null을 리턴합니다.

toDoubleOrNull()를 사용하면 NumberFormatException에 대한 예외처리가 필요없습니다. 대신 Nullable한 객체에 Double을 할당해야 합니다.

fun main(args: Array<String>){

    val str: String = "1234.5678a"

    val num: Double? = str.toDoubleOrNull()

    print("num : $num")
}

Output:

num: null
Loading script...
codechachaCopyright ©2019 codechacha