在iphone中如何将十进制数四舍五入到2位?
在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
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];