浮点型是能够包含小数部分的数值,浮点型比整型的表数范围更大,能够存储比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)
}