Kotlin:2整数乘法的意外值
我编写了一个函数,以十亿为单位对值进行舍入,下面是我的代码:Kotlin:2整数乘法的意外值,kotlin,multiplication,Kotlin,Multiplication,我编写了一个函数,以十亿为单位对值进行舍入,下面是我的代码: private fun roundBillion(value: Double): Int { val a = (value / 1000000).toInt() val res = a * 1000000 return res } 但是当我执行这个函数时,我在res变量中得到了一个意外的值。以下是断点位于返回语句上时的变量检查: 值=1.7636265135946954E11 a=176362 res=268
private fun roundBillion(value: Double): Int {
val a = (value / 1000000).toInt()
val res = a * 1000000
return res
}
但是当我执行这个函数时,我在res
变量中得到了一个意外的值。以下是断点位于返回语句上时的变量检查:
值=1.7636265135946954E11
a=176362
res=268340864
我想不出问题出在哪里
你所经历的是一场灾难
Double.MAX_值
为1.7976931348623157E308
Int.MAX_值
为2147483647
。您在计算中的数字(即176362000000)超过了这个数字。您所经历的是一个错误
Double.MAX_值
为1.7976931348623157E308
Int.MAX_值
为2147483647
。您在计算中的数字(即,176362000000
)超过了该值。值176362*1000000
不适合32位Int
所以您得到整数溢出。值176362*1000000
不适合32位Int
所以您得到整数溢出。这是溢出,但是溢出会导致包装吗?因为如果我用964632435
乘以10
我会得到1056389759
而不是646324350
。不确定溢出结果是什么原因。谢谢。这是溢出,但是溢出会导致包装吗?因为如果我用964632435
乘以10
我会得到1056389759
而不是646324350
。不确定溢出结果是什么原因。谢谢