在iphone中如何将十进制数四舍五入到2位?

在iphone中如何将十进制数四舍五入到2位?,iphone,rounding,nsformatter,Iphone,Rounding,Nsformatter,在iphone中,我们如何将十进制数字四舍五入到2位 比如说, 5345-->53 570-->57 89523-->90 我试着用nsformatter来做这个,下面是我用的代码 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumIntegerDigi

在iphone中,我们如何将十进制数字四舍五入到2位

比如说,

  • 5345-->53

  • 570-->57

  • 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。请帮我做这个

    谢谢,
    维诺德

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

    也许这个链接有帮助。您可以将浮点结果转换回nsnumber

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

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

    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
    
    似乎没有直接的方法把一个整数四舍五入

    但你仍然可以做到。您必须做一些额外的工作,将整数转换为小数,并使用一些技巧从浮点值中删除“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];