问题描述
谁能向我解释为什么这段代码有效:
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()
,它只会删除分数而不是四舍五入到最接近的整数。