Compose中数值计算后返回值始终为零的问题排查
问题原因与解决方案
你的问题核心是整数除法的特性——当achievedViews和totalViews为整数类型(比如Int或Long)时,Kotlin会执行整数除法:直接舍弃计算结果的小数部分,只保留整数商。举个例子,哪怕achievedViews=50、totalViews=100,50.div(100)得到的结果也是0,再乘以100自然还是0。
给你几种直接的解决方法:
强制触发浮点除法:将其中一个操作数转为浮点数,让除法运算保留小数部分
val percentage = (achievedViews.toDouble() / totalViews) * 100先乘后除(无浮点运算):如果不需要小数精度,可先将
achievedViews乘100再做除法,避免小数丢失val percentage = (achievedViews * 100) / totalViews注意:如果数值过大,这种方式可能存在整数溢出风险,需根据实际场景判断。
用浮点数扩展函数计算:和第一种思路一致,只是写法更贴合你原代码的风格
val percentage = achievedViews.toDouble().div(totalViews).times(100)
你可以通过日志打印achievedViews::class.simpleName和totalViews::class.simpleName,确认它们的类型是否为整数类型,这也能验证上述结论。
内容的提问来源于stack exchange,提问作者Ahmed Rabee
相关产品推荐
相关产品推荐

