如何在iPhone中将十进制数字舍入为2位数?
问题描述:
我们如何在iPhone中将十进制数字舍入为2位数?如何在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。请帮我这个
谢谢, 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);
答
使用此简单的代码,而不是格式化程序;
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
感谢您的建议 – Atom 2011-06-10 20:27:02