Kotlin - StringをFloatに変換

鼻間違ったでStringをFloatに変換する方法を紹介します。

String.toFloat()

String.toFloat()は、文字列をFloatに変換して返します。

fun main(args: Array<String>){

    val str: String = "1234.5678"

    val num: Float = str.toFloat()

    print("num : $num")
}

Output:

num : 1234.5678

NumberFormatException

toFloat()は数字ではなく、文字列を変換するときにNumberFormatExceptionが発生します。

fun main(args: Array<String>){

    val str: String = "1234.5678a"

    val num: Float = str.toFloat()
}

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.parseFloat(FloatingDecimal.java:122)
	at java.base/java.lang.Float.parseFloat(Float.java:455)

次のように例外処理が必要です。

fun main(args: Array<String>){

    val str: String = "1234.5678a"

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

Output:

Not number: 1234.5678a

String.toFloatOrNull()

String.toFloatOrNull()は、文字列をFloatに変換して返します。もし文字列が数字ではないときはnullを返します。

toFloatOrNull()を使用すると、NumberFormatExceptionの例外処理が必要ありません。代わりにNullableしたオブジェクトにFloatを割り当てる必要があります。

fun main(args: Array<String>){

    val str: String = "1234.5678a"

    val num: Float? = str.toFloatOrNull()

    print("num : $num")
}

Output:

num: null
codechachaCopyright ©2019 codechacha