如何使用swift检查数字是否为小数?
使用Objective-C:
if (number == (int) number) {
//decimal
}
else {
//not decimal
}
答案 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得到相同的数字,然后检查其余数。没有余数的数字是整数(整数)。