我写了一个函数来舍入十亿的值,这是我的代码:
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
我无法弄清问题在哪里!
你正在经历的是一个integer overflow。
Double.MAX_VALUE
是1.7976931348623157E308
。
Int.MAX_VALUE
是2147483647
。你计算中的数字(即176362000000
)超过了这个数字。