使用swift检查数字是否为十进制

时间:2014-08-28 15:31:06

标签: ios swift

如何使用swift检查数字是否为小数?

使用Objective-C:

if (number == (int) number) {
  //decimal
}
else {
  //not decimal
}

4 个答案:

答案 0 :(得分:47)

extension FloatingPoint {
  var isInteger: Bool {
    return rounded() == self
  }
}

答案 1 :(得分:6)

如果你将数字向下舍入(你可以使用floor函数),然后从原始数字中减去它,你将得到两者之间的差异。

if (number - floor(number) > 0.000001) { // 0.000001 can be changed depending on the level of precision you need
    // decimal
}

编辑 -

我的原始答案建议计算数字与其内联等价物之间的差异,以查看小数点后是否有任何单位。但是,如后所述,可能存在舍入误差,导致内存中值的表示与实际意义上的值略有不同。

例如,3.0可以表示为3.00000000000001,因此number - floor(number) > 0将返回true,即使它理论上应该返回false,因为偏移量为0.00000000000001。

因此请使用@ jessy的答案。

答案 2 :(得分:3)

夫特:

if number.rounded(.up) == number.rounded(.down){
    //number is integer
}else{
    //number is not integer
}

答案 3 :(得分:1)

extension FloatingPoint {
    var isInteger: Bool {
        return truncatingRemainder(dividingBy: 1) == 0
    }
}

我们可以将数字除以1得到相同的数字,然后检查其余数。没有余数的数字是整数(整数)。

相关问题