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_VALUE
是 1.7976931348623157E308
。
Int.MAX_VALUE
是 2147483647
。您在计算中的数字(即 176362000000
)超过了那个数字。
我写了一个函数来四舍五入十亿,这是我的代码:
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_VALUE
是 1.7976931348623157E308
。
Int.MAX_VALUE
是 2147483647
。您在计算中的数字(即 176362000000
)超过了那个数字。