我有几行代码将Long
的值转换为Int
。如我所知,如果Long
的值大于Int.MAX_VALUE
即2147483647
,它将截断Long
的值以在Int
中给出结果。我尝试了其他示例:
val num1: Long = 5453448989999998988
val num2: Int = num1.toInt()
给予
num2 = 2041161740
val num1: Long = 5453448989999998
val num2: Int = num1.toInt()
给予
num2 = 165249918
两个输入都超出范围。但是我的问题是为什么我会得到不同的输出,因为我期望输出被截断。
答案 0 :(得分:8)
科特林确实会截断您的电话号码,但采用二进制形式:
5453448989999998988
是0100101110101110100010101111011001111001101010011010100000001100
的二进制文件。
然后它采用其低32位:01111001101010011010100000001100
,即您的Int
,即2041161740。