我已经编写了一个将数值舍入为十亿的函数,这是我的代码:
private fun roundBillion(value: Double): Int {
val a = (value / 1000000).toInt()
val res = a * 1000000
return res
}
但是当我执行函数时,在res
变量中得到了意外的值。这是断点在return语句上时的变量检查:
值= 1.7636265135946954E11
a = 176362
res = 268340864
我不知道问题出在哪里!
答案 0 :(得分:3)
您遇到的是一个integer overflow。
Double.MAX_VALUE
是1.7976931348623157E308
。
Int.MAX_VALUE
是2147483647
。您在计算中的数字(即176362000000
)超出了该数字。