首页 > 解决方案 > 如何在 kotlin 中检查 Double 值是 Null 还是零

问题描述

如何在 kotlin 中检查 Double 值是 Null 还是零

val ratio:Double? = 0.0

val calRatio = if (ratio == null || ratio == 0.0)
        0.12
    else
        ratio

null , 0.0 , 0.1 中的比率

如果 ratio null 或 0.0 则返回 0.12

并且比率为 0.2 或更大,然后返回相同的比率值

如何检查此算法不使用 if 语句

标签: if-statementkotlindouble

解决方案


您可以在没有if使用takeUnless.

val ratio: Double? = 0.0
val calRatio = ratio.takeUnless { it == 0.0 } ?: 0.12

takeUnless调用检查号码是否与谓词匹配it == 0.0。如果谓词计算结果为truenull则返回。只有当谓词计算为时才会false返回实际数字。

我们可以通过考虑三种可能的情况来了解为什么这样做:

  1. rationull时,谓词it == 0.0计算为false。调用ratio.takeUnless { it == 0.0 }返回 的值ratio,即null。因为它的左侧操作数是null,所以?:运算符返回 的右侧值0.12
  2. ratio0.0时,谓词it == 0.0计算为true。调用ratio.takeUnless { it == 0.0 }忽略 的值,ratio而是返回null。因为它的左侧操作数是null,所以?:运算符返回 的右侧值0.12
  3. ratio是任何非空、非零数字时,谓词的it == 0.0计算结果为false。调用ratio.takeUnless { it == 0.0 }返回 的值ratio,即原始数字。因为它的左侧操作数不为空,所以?:运算符返回左侧的值。

推荐阅读