发脾气的人比被发脾气的对象所受的损失更大——霍姆斯
今天发现一个坑,在代码里尝试toBigDecimal
抛出了NumberFormatException
debug
一看,发现值为NaN
在kotlin
里,这样的代码会导致NaN
val nan = 0.0 / 0.0
nan.toBigDecimal() // java.lang.NumberFormatException
java.lang.Double.isNaN(nan) // true
最重要的是NaN
,不会通过 安全调用操作符?.
的判断,因为其属于有值
所以上述代码可以改为
代码语言:javascript复制val nan = 0.0 / 0.0
nan.takeUnless { it.isNaN() }?.toBigDecimal() // null