如何解决如何在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否则})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。