Please see the pictures:
I'm amazing the result is different.
A CGFloat is actually a double on 64 bit platforms. (It was a float on old 32 bit platforms.)
So here you're dividing a double by a double:
CGFloat price    =    88888736      /     a;
        ^^^^^         ^^^^^^^^            ^
       double        int -> double      double
and here you're dividing a double by a float:
CGFloat price2    =   88888736     /   100.0f;
        ^^^^^^        ^^^^^^^^         ^^^^^^
        double       int -> double      float
Change 100.0f to either 100.0 or (CGFloat)100 and you should be fine.
 
    
    CGFloat is a double on your machine, therefore what you are doing is this:
double a = 100.00f
double price = 88888736 / a
float a2 = 100.00f // `float` type enforced by the trailing `f`
double price2 = 88888736 / a2
The difference is that in the first case the division is a double division while in the second case this is a float division where the result is then assigned to a double. Since float division has less precision, you get the result you are seeing.
