浮点型数值可以包含小数部分,浮点型比整型的表数范围更大,可以存储比Long型更大或更小的数值。
Kotlin有两种浮点型:
- Float:表示32位的浮点型,当精度要求不高时可以使用此种类型。
- Double:表示64位的双精度浮点型,当程序要求存储很大或者高精度的浮点数时使用这种类型。
Kotlin的浮点数有两种表示形式:
- 十进制数形式:就是简单的浮点数。浮点数必须包含一个小数点,否则会被当成整数类型处理。
- 科学计数形式:5.12e2
只有浮点型的数值才可以使用科学计数形式表示。
Kotlin提供了三个特殊的浮点型数值:正无穷大、负无穷大和非数。
所有的正无穷大数值都相等,所有的负无穷大数值都相等;而非数不与任何数值相等,甚至和非数自己都不相等。
只有浮点数除以0.0才可以得到正无穷大数值或负无穷大注释,但如果使用整型除以整数0将会引起编译错误:division by zero(除0错误)
var af1 = 5.23456f
println("af1的值为:$af1")
//声明af2是Float类型,但是25.045默认是Double类型,报错
// var af2: Float = 25.045
var f1=5.12e2
println("f1的值为:$f1")
var a=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}")
//所有负无穷大数值都相等
println(-5.0/a==-50000/0.0)
//0.0除以0.0将出现非数
var nan:Double=a/a
println("a/a的值为:$nan")
//非数与自己都不相等
println(nan==nan)
输出结果如下:
af1的值为:5.23456
f1的值为:512.0
5.0/a的值为:Infinity
true
-5.0/a的值为:-Infinity
true
a/a的值为:NaN
false