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

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

使用Objective-C:

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

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

 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的答案。

 extension Double { var isInteger: Bool { return rint(self) == self } } 

迅速:

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