问题描述
当我启动我的应用程序时,应该可以了解设备的速度,我在文本字段中获得了一个NaN(我认为是“不是数字”?)值1到3秒。存储库,但如果是Nan,则应用程序崩溃。 我该如何用0(零)替换这个NaN?...例如:If(NaNvalue = true){(value = 0)} ...类似的东西。我没有找到用android或kotlin编写的任何内容,只是python(我不熟悉)。 任何帮助都很好!!!谢谢...
我的代码:
fun getSpeed(location: Location): Float{
if (mRunning ) {
// val getkmh = (location.speed * 3.6)
// mSpeedKmH = getkmh.toFloat()
mElapsedSeconds = ((SystemClock.elapsedRealtime()
-mChrono!!.getBase()) / 1000)
mSpeedMeter = mdistancetotal/mElapsedSeconds.toFloat()
mSpeed = ( mSpeedMeter *3.6).toFloat()// *3.6 > KmH
}
return mSpeedKmH
}
fun updateSpeed() {
val speedMeter = String.format(Locale.getDefault(),"%.1f",mSpeed)
tvSpeed.text = speedMeter
}
解决方法
val value: Double = yourDoubleValue.let { if (it.isNaN()) 0.0 else it}
同样可以应用于浮点值
,您可以像显示其他答案一样进行操作,也可以使用takeIf
和elvis运算符进行操作:
val speedMeter = String.format(Locale.getDefault(),"%.1f",mSpeed.takeIf { !it.isNaN() } ?: 0.0)
,
感谢费尔南多和Tenfour04 !!!两种版本都可以使用!
val speedGesammt = String.format(Locale.getDefault(),“%.1f”, mSpeedAverageKmH.takeIf {!it.isNaN()}吗:0.0)
val speedGesammt = String.format(Locale.getDefault(),“%.1f”, mSpeedAverageKmH.let {如果(it.isNaN())0.0否则})