objective c - Adding Float Causes wrong answer -
i adding 2 floats like:
nsstring *val1=@"355.00"; nsstring *val2=@"55555550.00"; nsstring *result=[nsstring stringwithformat:@"%.2f",[val1 floatvalue]+[val2 floatvalue]]; the answer getting 55555908.00 while on calculator 55555905.00
what doing wrong?
as stated in comments, floating point precision problem. float has precision of 7 decimal digits, double 15 decimal digits.
the foundation framework provides nsdecimalnumber class doing base-10 arithmetic, precision of 38 decimal digits:
nsstring *val1 = @"355.00"; nsstring *val2 = @"55555550.00"; nsdecimalnumber *dec1 = [nsdecimalnumber decimalnumberwithstring:val1]; nsdecimalnumber *dec2 = [nsdecimalnumber decimalnumberwithstring:val2]; nsdecimalnumber *decsum = [dec1 decimalnumberbyadding:dec2]; nsstring *result = [decsum stringvalue]; // --> 55555905
Comments
Post a Comment