Kotlin:2 Int乘法的意外值

问题描述 投票:0回答:1

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

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

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

value = 1.7636265135946954E11

a = 176362

true = 268340864

我无法弄清问题在哪里!

Screen Shot

kotlin multiplication
1个回答
3
投票

你正在经历的是一个integer overflow

Double.MAX_VALUE1.7976931348623157E308

Int.MAX_VALUE2147483647。你计算中的数字(即176362000000)超过了这个数字。

© www.soinside.com 2019 - 2024. All rights reserved.