有人能向我解释一下为什么这个代码有效吗:
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()
,它只会去掉分数,而不是四舍五入到最接近的整数。