Android中无法调用BigDecimal.intValue()方法的原因排查
问题原因及解决方法
核心原因
你代码里的x是Kotlin标准库的kotlin.math.BigDecimal,而Android文档里的intValue()方法属于Java标准库的java.math.BigDecimal——这是两个完全独立的类,所以会提示“Unresolved reference: intValue”。
Kotlin 1.5版本后引入了自身的BigDecimal实现,当直接调用"1.2".toBigDecimal()时,默认使用Kotlin标准库的扩展函数,返回的是kotlin.math.BigDecimal,这个类并没有intValue()方法。
两种解决方式
方式一:显式使用Java的BigDecimal
直接创建java.math.BigDecimal实例,即可调用intValue()方法:
val x = java.math.BigDecimal("1.2") val y = x.intValue() // 返回1
方式二:使用Kotlin BigDecimal的对应方法
Kotlin的BigDecimal提供了toInt()方法,功能和Java的intValue()一致(截断小数部分,返回整数部分):
val x = "1.2".toBigDecimal() val y = x.toInt() // 返回1
注意:如果BigDecimal的数值超出
Int类型范围,toInt()会抛出ArithmeticException,和Java的intValue()行为一致。
内容的提问来源于stack exchange,提问作者Adam Burley
相关产品推荐
相关产品推荐

