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 
  • Kotlin y javax.validation.constraints.NotNull
  • No se puede ejecutar la aplicación hello world como se muestra en O'Reilly - Introducción a la Progtwigción de Kotlin
  • error en la entrega de datos en el data binding de Android
  • Crear una matriz 2D genérica en Kotlin
  • Producto de una list o matriz en Kotlin
  • Renderiza la respuesta json en Kotlin
  • ¿Qué lenguajes de progtwigción admiten la implementación implícita de la interfaz por delegación?
  • Cómo usar fragments con kotlin
  • Swift - Salir de la function externa desde el cierre
  • Usando AnkoLogger con niveles que no sean "información"
  • ¿Cómo puedo cuadrar cada elemento de una matriz de integers en Kotlin?