I read this and that. I want this exactly:
1.4324 => "1.43"
9.4000 => "9.4"
43.000 => "43"9.4 => "9.40" (wrong)
43.000 => "43.00" (wrong)
In both questions the answers points to NSNumberFormatter
. So it should be easy to achieve, but not for me.
- (void)viewDidLoad { [super viewDidLoad]; UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 20)]; NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init]; [doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle]; [doubleValueWithMaxTwoDecimalPlaces setPaddingPosition:NSNumberFormatterPadAfterSuffix]; [doubleValueWithMaxTwoDecimalPlaces setFormatWidth:2]; NSNumber *myValue = [NSNumber numberWithDouble:0.01234]; //NSNumber *myValue = [NSNumber numberWithDouble:0.1]; myLabel.text = [doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue]; [self.view addSubview:myLabel]; [myLabel release]; myLabel = nil; [doubleValueWithMaxTwoDecimalPlaces release]; doubleValueWithMaxTwoDecimalPlaces = nil; }
I also tried it with
NSString *resultString = [NSString stringWithFormat: @"%.2lf", [myValue doubleValue]]; NSLog(@"%@", resultString);
So how can I format double values with maximum two decimal places? If the last position contains a zero the zero should be left out.
Solution:
NSNumberFormatter *doubleValueWithMaxTwoDecimalPlaces = [[NSNumberFormatter alloc] init]; [doubleValueWithMaxTwoDecimalPlaces setNumberStyle:NSNumberFormatterDecimalStyle]; [doubleValueWithMaxTwoDecimalPlaces setMaximumFractionDigits:2]; NSNumber *myValue = [NSNumber numberWithDouble:0.01234]; NSLog(@"%@",[doubleValueWithMaxTwoDecimalPlaces stringFromNumber:myValue]]; [doubleValueWithMaxTwoDecimalPlaces release]; doubleValueWithMaxTwoDecimalPlaces = nil;
Use a DecimalFormat object with a format string of "0. #".
1. Using Decimal Numbers by Format Cells. First you have to select the cell in which you want to remove trailing zeros after the decimal point, right-click to the Format Cells from the context menu.
format(“%. 2f”) We also can use String formater %2f to round the double to 2 decimal places. However, we can't configure the rounding mode in String.
format("%. 2f", 1.23456); This will format the floating point number 1.23456 up-to 2 decimal places, because we have used two after decimal point in formatting instruction %.
Try adding the following line, when configuring your formatter:
[doubleValueWithMaxTwoDecimalPlaces setMaximumFractionDigits:2];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With