直接上实例:
什么目的呢? // @98.9899999 ---> @"98.989999"
让服务器返回的整数还是整数, 返回小数多了我们就只保留两位, 从模型上修改, 这个思想很重要,凡是引用到地方自己自动变,而不是每个地方都去修改,抛砖引玉,希望对各位有所帮助
- (NSNumber *)dealNumber:(NSNumber *)sourceNumber
{
NSString *str = [sourceNumber description];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^\\d+\\.\\d{2}" options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *results = [regex matchesInString:str options:NSMatchingReportCompletion range:NSMakeRange(0, str.length)];
for (NSTextCheckingResult *result in results) {
HMLog(@"%@", [str substringWithRange:result.range]);
}
// 小数点的位置
NSUInteger dotIndex = [str rangeOfString:@"."].location;
if (dotIndex != NSNotFound && str.length - dotIndex > 2) { // 小数超过2位
str = [str substringToIndex:dotIndex + 3];
}
//有个NSNumberFormatter类,不常用,可以把num转变成string,而不用先变成 float,再转变成str,会有精度损失
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
return [fmt numberFromString:str];
}
- (void)setList_price:(NSNumber *)list_price
{
// @98.9899999 ---> @"98.989999"
_list_price = [self dealNumber:list_price];
}
- (void)setCurrent_price:(NSNumber *)current_price
{
_current_price = [self dealNumber:current_price];
}