浮點型是能夠包含小數部分的數值,浮點型比整型的表數範圍更大,能夠存儲比Long更大或更小的數。Kotlin的浮點型有兩種。html
Kotlin的浮點數有2種表示形式。編程
必須指出的是,只有浮點型的數值才能夠使用科學計數形式表示。例如51200是一個Int型的值,但512E2則是浮點型的值。app
若是聲明一個常量或變量時沒有指定數據類型,只是簡單地指定了其初始值爲浮點值,那麼Kotlin會自動判斷該變量的類型爲Double。ide
除此以外,Kotlin還提供了3個特殊的浮點型數值:正無窮大、負無窮大和非數。例如,使用一個正數除以0.0將獲得正無窮大數值,使用一個負數除以0.0將獲得負無窮大數值,0.0除以0.0或對負數開方將獲得一個非數。post
須要指出的是,全部的正無窮大數值都相等,全部的負無窮大數值都相等;而非數不與任何數值相等,甚至和非數本身都不相等。ui
注意:只有浮點數除以0.0才能夠獲得正無窮大數值或負無窮大數值,但若是使用整型值除以整數0將會引發編譯錯誤:division by zero(除0錯誤)。url
下面程序示範了上面介紹的關於浮點數的各個知識點。spa
程序清單:codes\02\2.4\FloatTest.ktcode
fun main(args: Array<String>) {orm
var af1 =
// 下面將看到af1的值已經發生了改變
println("af1的值爲:${af1}")
// 聲明af是Float類型,但25.2345值默認是Double類型,所以下面代碼編譯時報錯
var af2: Float = 25.2345
// f1的類型被推斷爲Double
var f1 = 5.12e2
println("f1的值爲:${f1}")
var a = 0.0
// 5.0除以0.0將出現正無窮大數值
println("5.0/a的值爲:${5.0 / a}")
// 全部的正無窮大數值都相等,因此下面將會輸出true
println(5.0 / a == 50000 / 0.0)
// -5.0除以0.0將出現負無窮大數值
println("-5.0/a的值爲:${-5.0 / a}")
// 全部的負無窮大數值都相等,因此下面將會輸出true
println(-5.0 / a == -50000 / 0.0)
// 0.0除以0.0將出現非數
var nan : Double = a / a
println("a/a的值爲:${nan}")
// 非數與本身都不相等,因此下面將會輸出false
println(nan == nan)
}