Jak zaokrąglić liczbę dziesiętną do 2 cyfr w telefonie iPhone?


Jak zaokrąglić liczby dziesiętne do 2 cyfr w telefonie iPhone?
Na przykład ,
  • 5345 --> 53
  • 570 -- > 57
  • 89523 -- > 90

Próbowałem użyć do tego nsformatter i oto kod, którego użyłem,
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumIntegerDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithInt:570]]; [formatter release];
NSLog(@"%@",numberstring);

Ciągle otrzymuję wartość 70 nawet po zmianie trybu zaokrąglania na inne parametry. Proszę, pomóż mi z tym
Podziękować,
Vinod.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj tego prostego kodu zamiast programu formatującego;
myFloat = roundf(100 * myFloat)/100.0;

mam nadzieję że to pomoże.
Lub możesz tego użyć
float roundedValue = round(2.0f * number)/2.0f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]];
[formatter release];
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ponieważ chcesz zaokrąglić cyfry dziesiętne, musisz w rzeczywistości podać liczbę zmiennoprzecinkową i ustawić maksymalną liczbę cyfr ułamkowych na 2. Prawdopodobnie tego szukasz.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp];NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:570.57018]];[formatter release];
NSLog(@"%@",numberString);
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zaokrąglanie liczby do 2 miejsc po przecinku w C
https://coderoad.ru/1343890/
może ten link pomaga. możesz przekonwertować wynik float z powrotem na nsnumber
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Odpowiedź Deepaka jest prawdopodobnie dokładnie tym, czego potrzebujesz, ale podam tylko inną opcję ze względu na opcje. Zakładam, że używasz wartości
NSNumber
, więc
someNumber
będzie tego typu w przykładzie:
NSString *numberString = [NSString stringWithFormat:@"%.2f", [someNumber floatValue]];
// this converts the NSNumber to a float, then formats the float in a string;
NSNumber *formattedNumber = [NSNumber numberWithFloat:[numberString floatValue]];
// this extracts the float from the string and puts it back as an NSNumber
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wydaje się, że nie ma bezpośredniego sposobu na zaokrąglenie liczby całkowitej

Ale nadal możesz to zrobić. Musisz wykonać dodatkową pracę, aby przekonwertować liczbę całkowitą na liczbę ułamkową i trochę sztuczek, aby usunąć „0”. z wartości zmiennoprzecinkowej.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp];
[formatter setMaximumFractionDigits:2];int n = 570;
float f = [[NSString stringWithFormat:@"0.%d", n] floatValue];
NSNumber *number = [NSNumber numberWithFloat:f];
NSString *str = [formatter stringFromNumber:number];
[formatter setPositivePrefix:@"0."];
number = [formatter numberFromString:str];
[formatter release];

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się