数值类型间转换

字符串转数值(解析)

Scala提供了将字符串解析为数值的方法。请看下面的代码:

// 字符串转数值(解析)
println("100".toInt)				// 100
println("100".toDouble)			// 100.0
println("100".toFloat)				// 100.0
println("1".toLong)				// 1
println("1".toShort)				// 1
println("1".toByte)				// 1

需要注意的是,如果字符串无法解析为数据的话,那么这些方法可能会抛出通常的Java NumberFormatException异常。

BigInt和BigDecimal实例也可以直接从字符串创建(也可以抛出NumberFormatException):

val bi = BigInt("1")
val bd = BigDecimal("3.14159")
println(bi)						// 1
println(bd)						// 3.14159

数值之间类型的转换

不同类型的数值之间也可以相互转换:

// 数值之间类型的转换
println(19.45.toInt)				// 19
println(19.toFloat)				// 19.0
println(19.toDouble)				// 19.0
println(19.toLong)				// 19

val a = 3
val b = a.toFloat
println(b)						// 3.0

// 判断是否可转换
val a2 = 1000L
println(a2.isValidByte)			// false
println(a2.isValidShort)			// true

指定值类型

可以像下面这样指定值的类型:

// 指定值类型
val a3 = 1
val a4 = 1d
val a5 = 1f
val a6 = 1000L

// 另一种方式是指定变量的类型
val a7 = 0: Byte
val a8 = 0: Int
val a9 = 0: Short
val a10 = 0: Double
val a11 = 0: Float
    
val a12:Byte = 0
val a13:Int = 0

可以在数字前面加上前导的0x或0X来创建十六进制值,并将它们存储为一个Int或Long型:

val a14 = 0x20
val a15 = 0x20L

《Flink原理深入与编程实战》