你正在见证一个 integer overflow .
Int
在Kotlin中(和Java一样)代表32位有符号的整数,所以它们的最大值是2,147,483,647。
你要做的是用200,000,000乘以11,这将产生2,200,000,000 - 超过最大值。所以只有这个数字的最小有效位可以存储在整数的32位中,而你最终会在负数的某个地方。
如果你想达到这种数值,你应该使用
UInt
(无符号整数,可以高出两倍),
Long
(64位,因此可以高出很多),或者其他更复杂的类型,如
BigInteger
。
这里有一个
Long
的例子。