如何在 iPhone 上将小数四舍五入到两位?

7

我们如何在iPhone中将小数四舍五入到2位?

例如,

  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。请帮助我解决这个问题。

谢谢, Vinod。

5个回答

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

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

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接