I have double number in a format like 34.123456789
. How can I change it to 34.123?
I just want 3 digits after the decimal point.
You can use:
#include <math.h>
:
dbl = round (dbl * 1000.0) / 1000.0;
Just keep in mind that floats and doubles are as close an approximation as the underlying type can provide. It may not be exact.
You can print it to 3 decimal places with [NSString stringWithFormat:@"%.3f",d]
.
You can approximately round it with round(d*1000)/1000
, but of course this isn't guaranteed to be exact since 1000 isn't a power of 2.
If you want to make
34.123456789 -> 34.123
34.000000000 -> 34 not 34.000
You can use NSNumberFormatter
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setMaximumFractionDigits:3]; // 3 is the number of digits
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:34.123456789]]); // print 34.123
NSLog(@"%@", [fmt stringFromNumber:[NSNumber numberWithFloat:34.000000000]]); // print 34
The approved solution has a small typo. It's missing the "%".
Here is the solution without the typo and with a little extra code.
double d = 1.23456;
NSString* myString = [NSString stringWithFormat:@"%.3f",d];
myString will be "1.234".