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

计算产品评分百分比异常:多非零分类时Bootstrap进度条失效求助

问题解决:评分进度条计算异常

问题原因

你遇到的问题是Java整数除法的截断特性导致的:oneStar、totalRating等都是int类型,当两个整数相除时,Java会直接舍去小数部分取整。比如fourStars=2、totalRating=4时,2/4的结果是0而非0.5,再乘以100后依然是0,所以进度条显示异常。只有当单个评分类别占比为100%时(比如oneStar=totalRating),整数除法结果为1,计算才正常。

修复代码

将除法运算中的任意一个操作数转换为浮点类型(比如double),让计算变为浮点除法,保留小数部分,最后再转为int类型传入setProgress:

// 替换原计算进度的代码段
Log.d("Progress", "inflateRating: "+ (double) fourStars / totalRating * 100);
oneStarProgress.setProgress((int) ((double) oneStar / totalRating * 100));
twoStarProgress.setProgress((int) ((double) twoStars / totalRating * 100));
threeStarProgress.setProgress((int) ((double) threeStars / totalRating * 100));
fourStarProgress.setProgress((int) ((double) fourStars / totalRating * 100));
fiveStarProgress.setProgress((int) ((double) fiveStars / totalRating * 100));

额外优化(可选)

如果需要更精确的四舍五入结果,可以使用Math.round()方法处理最终数值:

fiveStarProgress.setProgress((int) Math.round((double) fiveStars / totalRating * 100));

内容的提问来源于stack exchange,提问作者The Only Smart Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:50:26