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

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -