Search code examples
objective-ciosmacosnsnumber

Check if NSNumber is fraction


What is the best way of checking if a NSNumber is a fraction?

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

"Best" in terms of border case handling and performance.


Solution

  • Avoiding conversions to types with a smaller domain:

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