Как округлить десятичное число до 2 цифр в iphone? - PullRequest
7 голосов
/ 10 июня 2011

Как можно округлить десятичные числа до 2 цифр в iphone?

Например,

  1. 5345 -> 53

  2. 570 -> 57

  3. 89523 -> 90

Я попытался использовать nsformatter для этого и вот кодя использовал

    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);

Я продолжаю получать значение 70, даже после изменения режима округления на другие параметры.Пожалуйста, помогите мне с этим

Спасибо, Винод.

Ответы [ 5 ]

11 голосов
/ 10 июня 2011

Используйте этот простой код вместо форматера;

myFloat = roundf(100 * myFloat) / 100.0;

Надеюсь, это поможет.

Или вы можете использовать это

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];
4 голосов
/ 10 июня 2011

Поскольку вы хотите округлить десятичные цифры, вы должны предоставить для этого значение с плавающей запятой и установить максимальные дробные цифры в 2. Возможно, вы ищете это,

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);
0 голосов
/ 10 июня 2011

Кажется, что нет прямого способа округлить целое число

Но вы все равно можете это сделать. Вам нужно проделать дополнительную работу, чтобы преобразовать целое число в дробное число, и немного хитрости, чтобы убрать «0». от значения с плавающей запятой.

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];
0 голосов
/ 10 июня 2011

Дипак ответ, вероятно, именно то, что вам нужно, но я просто предоставляю другой вариант ради вариантов. Я предполагаю, что вы используете NSNumber значения, поэтому someNumber будет такого типа в примере:

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
0 голосов
/ 10 июня 2011

Округление числа до 2 десятичных знаков в C возможно, эта ссылка поможет. Вы можете преобразовать результат с плавающей запятой обратно в nsnumber

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...