如何在iphone中将十进制数舍入为2位?

时间:2011-06-10 10:46:03

标签: iphone rounding nsformatter

我们如何在iphone中将十进制数舍入为2位数?

例如,

  1. 5345 - > 53

  2. 570 - > 57

  3. 89523 - > 90

  4. 我尝试使用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 个答案:

答案 0 :(得分:11)

使用这个简单的代码而不是格式化程序;

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

答案 1 :(得分:4)

由于你想要对小数位进行四舍五入,你实际上应该为此提供一个浮点数,并将最大小数位数设置为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);

答案 2 :(得分:0)

Rounding Number to 2 Decimal Places in C也许这个链接有帮助。你可以将浮动结果转换回nsnumber

答案 3 :(得分:0)

Deepak的回答可能正是你所需要的,但我只是为了选择而提供另一种选择。我假设您使用的是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

答案 4 :(得分:0)

  

似乎没有直接的方法来整理整数

但你仍然可以做到。你必须做一些额外的工作来将整数转换为小数和一些技巧来删除“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];