如何在iPhone中将十进制数字舍入为2位数?

问题描述:

我们如何在iPhone中将十进制数字舍入为2位数?如何在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。

既然你正在寻找围捕十进制数字,你实际上应该为此提供一个浮动,并设置最大的小数位数为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

感谢您的建议 – Atom 2011-06-10 20:27:02

Rounding Number to 2 Decimal Places in C也许此链接help.you可以将浮动结果转换回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]; 
+0

感谢您的投入 – Atom 2011-06-10 20:26:17