如何在 Kotlin 中计算百分比

16

我需要在 Kotlin 中计算百分比。我尝试了但没有得到正确的答案:

var percentage = (count/totalCount) * 100
it.toast("Percentage: $percentage")

Kotlin中的正确语法是什么?


3
如果count和totalCount是整数,则count/totalCount会进行整数除法。更改为:var percentage = 100.0 * count / totalCount - forpas
val size = 10f val percentage = percentTrip / totalTrip * 100f变量大小为10f 百分比为percentTrip / totalTrip * 100f - Ankit Tale
3个回答

50

很可能你正在苦恼于对两个整数应用除法运算将导致执行整数除法,从而产生整数结果的事实。

诀窍是将其中一个操作数提升为浮点类型:

var percentage = (count.toDouble() / totalCount) * 100

这个函数很棒,但它返回的是点数,而在百分比的情况下我们需要整数值。 - Abdul Mateen
4
转换为 toInt()。 - Robby Cornelissen
嗨@RobbyCornelissen:a)将一个操作数的类型更改为“double”是否会产生任何意外结果,例如“nan”错误,或者完全可以按照上述步骤进行?请指导。(b)在我的情况下,我有两个操作数都是类型“Long”,所以我应该将其中一个转换为类型“Int”吗? - SVK
  1. 我不知道任何整数值在转换为双精度时会产生NaN。对于这种情况,只要不除以0,你就应该没问题。
  2. 你可以直接将长整型转换为双精度,但如果你的长整型在2^52到2^63范围内(正数或负数),你将失去精度。
- Robby Cornelissen
@SVK 忘记标记你了,请查看上面的评论。 - Robby Cornelissen

7

这是一个可以在任何地方使用的扩展函数:

fun Int.divideToPercent(divideTo: Int): Int {
        return if (divideTo == 0) 0
        else (this / divideTo.toFloat()).toInt()
}

并像这样使用它:

val pecent = 10.divideToPercent(20)

percent将会是50。

你甚至可以将其作为中缀函数:

infix fun Int.percentOf(value: Int): Int {
        return if (this == 0) 0
        else (value / this.toFloat()).toInt()
}

并像这样使用它:

val pecent = 10 percentOf 200

百分数 percent 将是 20


您的变量 pecent 打错了,请问应该是 "percent" 吗? - the Tin Man

-1
val percentage = (count * 100) / totalCount 

如果您提供为什么这是首选解决方案的解释并解释其工作原理,那将更有帮助。我们想要教育,而不仅仅提供代码。 - the Tin Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接