检查计算的输出是否为整数

时间:2017-07-31 17:50:37

标签: kotlin

检查计算输出是否为整数的方法是什么?我试过这样做:

if ((i / 3) is Int ) {
print("Whole Number")
}

但似乎是在检查变量的类型,而不是输出是什么。

编辑:显然如果变量是一个整数,它会自动舍入操作的输出,所以我必须做这样的事情:

 if((i.toFloat()/3) == (i / 3).toFloat()){
        println("Whole Number")

4 个答案:

答案 0 :(得分:5)

检查/是否为整数的简单方法是检查余数为零:Short

但请注意,如果Int的两个操作数都是整数类型(Longval i: Int = 2i % 3 == 1),则除法结果始终为整数数字(小数部分刚刚被删除),因此,如果您有i / 3 == 0,那么i / 3.0i.toDouble / 3。要使用小数除法,请至少将其中一个操作数设为小数Doubled % 1.0 == 0.0

如果您想检查Math.floor(d) == d是否完整,可以使用{{1}}或检查{{1}}。

答案 1 :(得分:1)

Kotlin中的

is运算符用于检查对象的实例。

在这里你写了(i / 3) is Int意思是:

您正在检查(i / 3)是否是Int的实例。

在Kotlin中,您必须编写以下代码以检查数字是否为整数。

如果是一个int

if((i / 3).toInt() == (i / 3)) {
    print("Whole Number")
}

否则您也可以使用以下代码:

if((i / 3).toInt().compareTo(i / 3) == 0) {
    print("Whole Number")
}

答案 2 :(得分:1)

在不知道计算类型的情况下检查Double是否为整数的一种方法(这不仅仅用于除法)将减去整数部分以得到分数部分并比较为零:

fun isWhole(value: Double):Boolean {
    return value - value.toInt() == 0.0
}

答案 3 :(得分:1)

一个简单的技巧是检查ceilfloor函数的值是否相等

如果它们相等,则结果为整数
如果不是,则结果不是整数

if (ceil(i/3) == floor(i/3))
        print("int (a whole number)")
    else
        print("not int (not a whole number)")