我们如何在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。请帮帮我这个
谢谢, 维诺德。
答案 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];