How to round off decimal number to 2 digits in iphone?

穿精又带淫゛_ 提交于 2019-12-08 17:25:04

问题


How can we round off decimal numbers to 2 digits in iphone ?

For example ,

  1. 5345 --> 53

  2. 570 -- > 57

  3. 89523 -- > 90

I tried to use nsformatter for this and here is the code i used ,

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

I keep on getting the value as 70 even after changing the rounding mode to different options. Please help me with this

Thanks, Vinod.


回答1:


Use this simple code instead of formatter;

myFloat = roundf(100 * myFloat) / 100.0;

i hope it helps.

Or you can use this

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



回答2:


Since you're looking to round up the decimal digits, you should actually provide a float for this and set the maximum fractional digits to 2. You're probably looking for this,

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



回答3:


Rounding Number to 2 Decimal Places in C maybe this link helps.you can the convert the float result back to an nsnumber




回答4:


Deepak's answer is probably exactly what you need, but I'm just providing another option for the sake of options. I'm assuming you're using NSNumber values, so someNumber will be of that type in the example:

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



回答5:


It seems there is no direct way to round off a whole number

But you can still do it. You have to do some extra work to convert the whole number to a fractional number and some trick to remove the "0." from the float value.

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


来源:https://stackoverflow.com/questions/6305256/how-to-round-off-decimal-number-to-2-digits-in-iphone

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!