如何在Kotlin中将NaN值替换为0,= 0,!= null以提高速度?

问题描述

当我启动我的应用程序时,应该可以了解设备的速度,我在文本字段中获得了一个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否则})