Kotlin: ¿Cómo puedo verificar si un número tiene puntos decimales (la solución del module no funciona)

Soy nuevo en Kotlin y vine de JS. Actualmente estoy haciendo una aplicación de calculadora y estoy trabajando en el operador '%'. Necesito averiguar si la salida de la 'input actual * 0.01' es un número integer o con puntos decimales. Usualmente, usaría

num % 1 !== 0 

pero no funciona en Kotlin y me da el error "! = el operador no puede aplicarse a Double o Int". Es lo mismo para Cadenas o Caracteres. Mi código de Kotlin está abajo, ¡espero que alguien pueda ayudar! ¡Gracias!

 val percentResult: Double() = result.toDouble() * 0.01 if(percentResult % 1 != 0) { result = (NumberFormat.getInstance().format(percentResult)).toString() } else { result = percentResult.toInt().toString() } 

Código equivalente

El 0 es un int, por lo que necesita decir explícitamente que quiere un doble como este:

 fun factor100(n: Number) = n.toDouble() % 100.0 == 0.0 

Por qué esto probablemente no es lo que quieres

Para valores dobles esto puede no funcionar correctamente, debido a errores de punto flotante, por lo que querrá verificar si la diferencia es menor que una pequeña cantidad.

Un ejemplo de cómo se rompe esto es este:

 fun main(args: Array<String>) { var x = 0.3 - 0.2 // 0.1 (ish) x *= 1000 // 100 (ish) println(factor100(x)) // False } fun factor100(n: Number) = n.toDouble() % 100.0 == 0.0 
  • @Antes de que la anotación sea ignorada por kotlin en la testing de expreso?
  • La lógica de carga de datos de Endless RecyclerView no es consistente en todos los dispositivos
  • ¿Cómo puedo usar KotlinJS sin el stdlib?
  • El ejemplo simple de kotlin imprime kotlin.Unit al imprimir el resultado de la function infijo
  • SonarQube: ¿Cómo aplicar múltiples perfiles de calidad a un proyecto?
  • ¿Cómo no emitir datos de Flowable para testings unitarias?
  • Escuchar posts y escribir commands en un flujo observable
  • Proguard y Kotlin-Reflect / Kotlin Anotaciones
  • Android Architecture Components Room ViewModel CompleteableFormAction
  • Usar la function de infijo del receptor en lambda (para un DSL)
  • ¿Kotlin's Float, Int etc está optimizado para los types incorporados en la JVM?