安卓系统/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(),它只会去掉分数,而不是四舍五入到最接近的整数。

相关内容

  • 没有找到相关文章

最新更新