如何解决Android/Kotlin 中的操作顺序
谁能向我解释为什么这段代码有效:
if (questionList[currentIndex].answer == inputAnswer) {
correctAnswers += 1*100/questionList.size
percentage.text = "Правильно: $correctAnswers%"
而这个没有:
if (questionList[currentIndex].answer == inputAnswer) {
correctAnswers += 1/questionList.size*100
percentage.text = "Правильно: $correctAnswers%"
当我单击一个按钮并使用第一段代码进行设置时,一切正常并且我的 textView 得到更新,但是当我更改操作顺序时,什么也没有发生(textView.text 不会更改它的值)。
我错过了什么吗?
先谢谢你!
解决方法
当您使用整数进行数学运算时,不会保留分数分量。假设问题列表的大小为 10。
在你的第一个代码块中,你有
1 * 100 / 10
操作是从左到右进行的,所以在第一次乘法之后,你有
100 / 10
然后解析为 10。
现在有了你的第二个代码块
1 / 10 * 100
浮点数的第一个除法是 0.1,但对于整数,由于不保留小数,所以计算结果为 0。
0 * 100
它解析为 0。所以如果被除数小于除数,它总是会导致零。
如果你真的想显示小数,你应该使用浮点数,如果你希望结果是一个 Int,在结果上使用 roundToInt()
。如果您只使用 toInt()
,它只会删除分数而不是四舍五入到最接近的整数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。