Android/Kotlin 中的操作顺序

Order of operations in 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(),它只会舍去分数而不是四舍五入到最接近的整数。