You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:15:33