float-保留N位小数
前言
背景:在实际开发中,有时我们需要把某些浮点数(CGFloat)保留成指定小数位数的数显示在界面上(比如有的数需要保留两位小数,有的需要保留四位小数)。
需求:作为接口供应方,调用者只需要告诉我们到底需要几位小数!精度取舍问题,应该在内部实现。
实现
方法一:使用stringWithFormat
- (NSString *)formatNumber:(CGFloat)number withPointDigits:(int)digits {
NSString *formatStr = [NSString stringWithFormat:@"%%0.%df", digits];
return [NSString stringWithFormat:formatStr, number];
}
方法二:使用NSNumberFormatter
- (NSString *)formatNumber:(CGFloat)number withPointDigits:(int)digits {
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
NSString *positiveFormat = @"0.";
for (int i = 0; i < digits; i++) {
positiveFormat = [positiveFormat stringByAppendingString:@"0"];
}
[fmt setPositiveFormat:positiveFormat];
return [fmt stringFromNumber:[NSNumber numberWithFloat:number]];
}