Kotlin: Как проверить, имеет ли число десятичные точки (решение модуля не работает)

Я новичок в Котлине и приехал из JS. В настоящее время я делаю приложение калькулятора и работаю над оператором «%». Мне нужно выяснить, является ли вывод «текущего ввода» 0.01 »целым числом или десятичными точками. Обычно я буду использовать

num % 1 !== 0 

но он не работает в Котлине и дает мне ошибку «! = оператор не может применяться к Double или Int». Это то же самое для строк или символов. Мой код Котлина ниже, надеюсь, кто-то может помочь! Благодаря!

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

Эквивалентный код

0 – это int, поэтому вам нужно явно указать, что вы хотите использовать double:

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

Почему это, вероятно, не то, что вы хотите

Для двойных значений это может работать некорректно из-за ошибок с плавающей запятой, поэтому вы захотите проверить, меньше ли разница, чем небольшая сумма.

Пример того, как это нарушается, заключается в следующем:

 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