Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin如何将Long转换为Int?为超出范围的值获取不同的输出_Android_Kotlin_Casting_Long Integer - Fatal编程技术网

Android Kotlin如何将Long转换为Int?为超出范围的值获取不同的输出

Android Kotlin如何将Long转换为Int?为超出范围的值获取不同的输出,android,kotlin,casting,long-integer,Android,Kotlin,Casting,Long Integer,我有几行代码将Long值转换为Int。我知道如果Long值大于Int.MAX_值,即2147483647,它将截断Long值,以Int表示结果。我尝试了不同的示例: val num1: Long = 5453448989999998988 val num2: Int = num1.toInt() 给予 num2=2041161740 给予 num2=165249918 两个输入都超出范围。但我的问题是,为什么我会得到不同的输出,因为我希望得到截断的输出。Kotlin确实会截断您的数字,但以二进

我有几行代码将Long值转换为Int。我知道如果Long值大于Int.MAX_值,即2147483647,它将截断Long值,以Int表示结果。我尝试了不同的示例:

val num1: Long = 5453448989999998988
val num2: Int = num1.toInt()
给予

num2=2041161740

给予

num2=165249918


两个输入都超出范围。但我的问题是,为什么我会得到不同的输出,因为我希望得到截断的输出。

Kotlin确实会截断您的数字,但以二进制形式:

545344899998988是二进制的0100101110101110100010101111001111001101010011010100000001100


然后它取其较低的32位:01111001010100110100000001100,这是您的整数,即2041161740。

Kotlin确实会截断您的数字,但以二进制形式:

545344899998988是二进制的0100101110101110100010101111001111001101010011010100000001100

然后它取其较低的32位:01111001010100110100000001100,这是您的Int,即2041161740。

将long-long转换为Int可能导致Int所能容纳的位溢出。这就解释了为什么会得到不同的输出。将long-long转换为Int可能会导致Int所能容纳的位溢出。这就解释了为什么你会得到不同的输出。
val num1: Long = 5453448989999998
val num2: Int = num1.toInt()