检查NSNumber是否为分数的最佳方法是什么?

NumberIsFraction(@(0)); // NO;
NumberIsFraction(@(0.5)); // YES;
NumberIsFraction(@(1.0)); // NO;

在边境案例处理和性能方面“最佳”。

最佳答案

避免转换为具有较小域的类型:

BOOL NumberIsFraction(NSNumber *number) {
    double dValue = [number doubleValue];
    if (dValue < 0.0)
        return (dValue != ceil(dValue));
    else
        return (dValue != floor(dValue));
}

10-08 06:25