Używam następujący fragment kodu Objective-C do sformatowania NSNumber i działa dobrze przez większość czasu, ale nie całkiem robi to, co chcę, gdy obiekt NSNumber posiada liczbę całkowitą (bez części ułamkowej) .Jak określić miejsca dziesiętne podczas formatowania obiektów NSNumber?
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80.0f, 90.0f, 225.0f, 40.0f)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormat:@"###.##"];
int bytes = 1024 * 1024;
NSNumber *total = [NSNumber numberWithFloat:([self.totalFileSize floatValue]/bytes)];
label.text = [NSString stringWithFormat:@"0.00 MB of %@ MB", [formatter stringFromNumber:total]];
Tak na przykład, jeśli self.totalFileSize
posiada 55.2300, to pojawi się "55.23" jak powinno na moim UILabel
. Ale jeśli ta sama zmienna ma 55, po prostu wyświetli "55" na etykiecie.
Czego naprawdę chcę, aby ten kod zawsze zawierał 2 miejsca dziesiętne na wyjściu.
Jak mogę to osiągnąć?
setFormat: Nie jest dostępny dla systemu iOS (może działać w symulatorze, ale nie na urządzeniu). Musisz użyć setPositiveFormat: i setNegativeFormat: –
na iOS, musisz użyć 'setMinimumFractionDigits:' i/lub - 'setMaximumFractionDigits:' – Laszlo