Kotlin:我如何检查数字是否有小数点(模数解决方案不起作用)

我是Kotlin的新手,来自JS。 我目前正在制作一个计算器应用程序,并正在处理'%'运算符。 我需要找出'当前输入* 0.01'的输出是整数还是小数点。 通常我会用

num % 1 !== 0 

但它不适用于Kotlin,并给我错误“!=操作符不能应用于Double或Int”。 字符串或字符是一样的。 我的Kotlin代码如下,希望有人能帮助! 谢谢!

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

等效的代码

0是一个int,所以你需要明确地说你想要一个这样的双:

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

为什么这可能不是你想要的

对于double值,由于浮点错误,这可能无法正确工作,所以您需要检查差值是否小于一些小值。

这是如何破坏的一个例子是这样的:

 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