[Kotlin]0除算の結果の型による違い

最近、Kotlin初めてみました。 (Javaもそこまでたくさんは触ったことはありません。)
そんな中、電卓を作成していたら初めて知りました。
0除算の結果が型によって変わるんですね。
 

   // テスト用メソッド。
   // 記述は省略していますが、画面上のボタンを押すとこのメソッドが呼ばれます。  
   private fun testMethod(){

        // Floatで0除算をしてみます。
        try {
            Log.d("DivideTest1", "TEST1 ~Float~")
            var value1 :Float = 3F
            var value2 :Float = 0F

            var result1 = value1 / value2

            // 計算自体は何事もなく完了しますが、resultは"Infinity"となります。
            Log.d("DivideTest", "RESULT: $result1")

            // ついでにInfinityが何の型なのか見てみました。Float型でした。当たり前か。
            Log.d("DivideTest", "CLASS: ${result1::class.java}")

        } catch(ex: ArithmeticException){
            // Floatの場合は例外が発生せず、ここは通りません。
            Log.d("DivideTest2", "ArithmeticException")
        }


        // Intで0除算をしてみます。
        try {
            Log.d("DivideTest", "TEST2 ~Int~")
            var value1: Int = 3
            var value2: Int = 0

            var result1 = value1 / value2

            // 1つ上の行の0除算で例外が発生するため、この行は実行されません。
            Log.d("DivideTest", "RESULT: $result1")

        } catch(ex: ArithmeticException){
            // Intの場合は例外が発生してこちらを通ります。
            Log.d("DivideTest", "ArithmeticException")
        }
    }

結果ログ

D/DivideTest1: TEST1 ~Float~
D/DivideTest: RESULT: Infinity
D/DivideTest: CLASS: float
D/DivideTest: TEST2 ~Int~
D/DivideTest: ArithmeticException

結論、Floatの場合は if(value2 == 0F) 等、直接0じゃないかを確認する処理を行う必要があるようです。
 

参考サイト
変数をdouble型にしたら例外処理が動作しない:JavaTips 〜Javaプログラミング編 - @IT

Infinity=無限大!
Infinityと聞くと、映画ベンジャミンバトンの陽気な船乗りかつアーティストのおじさんを思い出します。
インフィニティーー!って大きな声で言いたくなります(笑)