问答游戏中等级百分比计算结果显示0的技术求助
解决问答游戏等级百分比显示为0的问题
嘿,这个问题我太熟悉了!你遇到的是整数除法的典型坑~
问题根源
你用的公式(levelvideo/QuestionLibraryVideo.mChoices.length)*100里,levelvideo和QuestionLibraryVideo.mChoices.length都是整数类型。在绝大多数编程语言(比如Java、C#、Kotlin等)中,整数除以整数会直接丢弃小数部分,只返回整数结果。举个例子:如果当前等级是3,最大等级是10,那3/10在整数运算里会得到0,再乘100自然还是0。
几种解决方案
根据你使用的语言,选对应的方法就行:
1. 转换为浮点数运算
把其中一个操作数转换成浮点数,强制让除法变成浮点运算,这样就能保留小数部分了:
- Java示例:
float percentage = (levelvideo * 1.0f / QuestionLibraryVideo.mChoices.length) * 100; - Kotlin示例:
val percentage = (levelvideo.toFloat() / QuestionLibraryVideo.mChoices.length) * 100 - JavaScript示例(JS默认是浮点,但如果变量是字符串转的整数,确保转成数字):
const levelvideo = parseInt(document.querySelector('#current-level').value); const maxLevel = QuestionLibraryVideo.mChoices.length; const percentage = (levelvideo / maxLevel) * 100;
2. 先乘后除(适合需要整数百分比的场景)
如果只需要整数形式的百分比,可以先把当前等级乘100,再除以最大等级,这样能避免提前取整的问题(注意:如果数值很大,可能会有溢出风险,根据语言特性调整类型):
int percentage = (levelvideo * 100) / QuestionLibraryVideo.mChoices.length;
3. 格式化显示结果
如果要让百分比显示更友好(比如保留两位小数),可以用语言自带的格式化工具:
- JavaScript示例:
// 保留两位小数并加上百分号 const displayText = percentage.toFixed(2) + '%'; - Java示例:
String displayText = String.format("%.2f%%", percentage);
内容的提问来源于stack exchange,提问作者Marios
相关产品推荐
相关产品推荐

