在Objective C中,我如何检查存储为浮点数的整数值(例如2.000、3.000、8.000)是否为整数,而不是像2.456、3.578这样的分数?
在Objective C中,我如何检查存储为浮点数的整数值(例如2.000、3.000、8.000)是否为整数,而不是像2.456、3.578这样的分数?
我认为你在询问如何判断存储为float
的数字是否为整数。有许多技巧,以下是其中一种:
if(fVal == floorf(fVal))
... // do something
使用浮点数余数函数:
if (fmod(fVal, 1.0) == 0.0)
// is integer
BOOL isInteger = !fmod(fVal, 1.0);
我相信这是检查它最简单的方法:
if( fnum == (int)fnum ) {
//fnum has integer value without decimals
}
我个人喜欢
#define F_ISWHOLENUM(_float) (!fmod(_float, 1.0f))
float number = myNum.floatValue;
CFNumberType numberType = CFNumberGetType((CFNumberRef)myNum);
if(number == floorf(number) && (number == 1 || number == 0))
{
// It is a bool (Exceptions 1.000, 0.00000)
}
else
{
// It is some other number use numberTyoe here except kCFNumberCharType
if (numberType == kCFNumberSInt32Type) {
}
}