Kotlin:2 Int 乘法的意外值

Kotlin: Unexpected value for 2 Int multiplication

我写了一个函数来四舍五入十亿,这是我的代码:

private fun roundBillion(value: Double): Int {
    val a = (value / 1000000).toInt()
    val res = a * 1000000
    return res
}

但是当我执行该函数时,我在 res 变量中得到了一个意外的值。这是断点位于 return 语句时的变量检查:

value = 1.7636265135946954E11

a = 176362

res = 268340864

我想不通问题出在哪里!

您遇到的是 integer overflow

Double.MAX_VALUE1.7976931348623157E308

Int.MAX_VALUE2147483647。您在计算中的数字(即 176362000000)超过了那个数字。