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。请在这件事上给予我帮助

谢谢,维诺德。

4

5 回答 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];
于 2011-06-10T11:43:39.313 回答
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);
于 2011-06-10T11:21:06.103 回答
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];
于 2011-06-10T12:06:40.043 回答
0

将数字四舍五入到 C 中的 2 个小数位 也许此链接有帮助。您可以将浮点结果转换回 nsnumber

于 2011-06-10T11:24:13.030 回答
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
于 2011-06-10T11:48:47.960 回答