Begrenzen Sie ein Doppel auf zwei Dezimalstellen ohne nachfolgende Nullen

Lese ich diese und dass. Ich will genau dies:

1.4324 => "1.43"
9.4000 => "9.4"
43.000 => "43"

9.4 => "9.40" (falsch)
43.000 => "43.00" (falsch)

In beiden Fragen die Antworten Punkte zu NSNumberFormatter. So ist es sollte leicht zu erreichen sein, aber nicht für mich.

- (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;
}

Ich habe auch versucht es mit

NSString *resultString = [NSString stringWithFormat: @"%.2lf", [myValue doubleValue]];
NSLog(@"%@", resultString);

Also wie kann ich das format double-Werte mit maximal zwei Nachkommastellen? Wenn die Letzte position enthält eine null, die null ausgelassen werden sollte.

Lösung:

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;
Kommentar zu dem Problem
Wollen Sie Rundungen? Das ist sollte 1.4363 => "1.43" oder "1.44"? Kommentarautor: Nick Moore
Ich denke, dass würde Sinn machen. Kommentarautor: testing
Vergessen Sie nicht, zu release doubleValueWithMaxTwoDecimalPlaces, nachdem alle... Kommentarautor: Lukasz
@Lukasz: Danke! Kommentarautor: testing

InformationsquelleAutor der Frage testing | 2010-10-26

Schreibe einen Kommentar