微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android/Kotlin 中的操作顺序

如何解决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 举报,一经查实,本站将立刻删除。