看下面的代码
var score:Double = 1461249811 + 1000000000
println(score)
因为 = 后的数值大于 Int 2147483647 最大值的范围,所以它加起来必须赋值给 Long 或者 Double 类型。这样写看似没问题,但打印值为 -1.833717485E9。
改为这样
var score:Double = 1461249811.toLong + 1000000000.toLong
println(score)
打印 2.461249811E9
第一种 = 后面会默认存为 Int,再转换为 Double,已经发生溢出了。