检查计算输出是否为整数的方法是什么?我试过这样做:
if ((i / 3) is Int ) {
print("Whole Number")
}
但似乎是在检查变量的类型,而不是输出是什么。
编辑:显然如果变量是一个整数,它会自动舍入操作的输出,所以我必须做这样的事情:
if((i.toFloat()/3) == (i / 3).toFloat()){
println("Whole Number")
答案 0 :(得分:5)
检查/
是否为整数的简单方法是检查余数为零:Short
。
但请注意,如果Int
的两个操作数都是整数类型(Long
,val i: Int = 2
,i % 3 == 1
),则除法结果始终为整数数字(小数部分刚刚被删除),因此,如果您有i / 3 == 0
,那么i / 3.0
但i.toDouble / 3
。要使用小数除法,请至少将其中一个操作数设为小数Double
或d % 1.0 == 0.0
。
如果您想检查Math.floor(d) == d
是否完整,可以使用{{1}}或检查{{1}}。
答案 1 :(得分:1)
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)
一个简单的技巧是检查ceil
和floor
函数的值是否相等
如果它们相等,则结果为整数
如果不是,则结果不是整数
if (ceil(i/3) == floor(i/3))
print("int (a whole number)")
else
print("not int (not a whole number)")