创建一个NSString的分类
#import <Foundation/Foundation.h>
@interface NSString(divideNum)
#pragma mark - 保留两位小数,只舍不入
- (instancetype)dividFormat;
@end
#import "NSString+divideNum.h"
@implementationNSString (divideNum)
#pragma mark - 整数进行分割(例如:12345 -》12,345)
- (NSString *)changeNumberFormat:(NSString *)num {
if (num == nil) {
return @"";
}
int count = 0;
longlong int a = num.longLongValue;
while (a != 0)
{
count++;
a /= 10;
}
NSMutableString *string = [NSMutableStringstringWithString:num];
NSMutableString *newstring = [NSMutableStringstring];
while (count > 3) {
count -= 3;
NSRange rang = NSMakeRange(string.length - 3, 3);
NSString *str =[string substringWithRange:rang];
[newstring insertString:str atIndex:0];
[newstring insertString:@"," atIndex:0];
[string deleteCharactersInRange:rang];
}
[newstring insertString:string atIndex:0];
return newstring;
}
- (instancetype)dividFormat {
if (![self isPureFloat:self] && ![self isPureInt:self]) {
//防止不是数字的情况
return @"--";
}
NSArray<NSString *> *arr = [self componentsSeparatedByString:@"."];
if (arr.count == 1) {
// 整数:123
NSMutableString *str =[self changeNumberFormat:arr.firstObject].mutableCopy;
[str appendString:@".00"];
return str;
} elseif (arr.count == 2) {
NSString *decimal =arr[1];
if (decimal.length == 1) {
//一位小数10.0
NSMutableString *reStr= [arr.firstObject dividFormat].mutableCopy;
reStr = [reStr stringByReplacingOccurrencesOfString:@".00" withString:@""].mutableCopy;
[reStr appendString:@"."];
NSMutableString*resultStr = decimal.mutableCopy;
[resultStr appendFormat:@"0"];
[reStr appendString:resultStr];
return reStr;
} else if (decimal.length == 2) {
//两位小数10.00
NSMutableString*resultStr = [arr.firstObject dividFormat].mutableCopy;
resultStr =[resultStr stringByReplacingOccurrencesOfString:@".00" withString:@""].mutableCopy;
[resultStr appendFormat:@"."];
[resultStr appendFormat:@"%@", arr[1]];
return resultStr;
} else if (decimal.length >= 3) {
//大于三位小数10.000...
NSMutableString*resultStr = [arr.firstObject dividFormat].mutableCopy;
resultStr =[resultStr stringByReplacingOccurrencesOfString:@".00" withString:@""].mutableCopy;
NSString *str =[decimal substringToIndex:2];
[resultStr appendString:@"."];
[resultStr appendString:str];
return resultStr;
}
}
return @"";
}
#pragma mark - 判断是否是整型
- (BOOL)isPureInt:(NSString *)string{
NSScanner* scan = [NSScannerscannerWithString:string];
int val;
return [scan scanInt:&val] && [scan isAtEnd];
}
#pragma mark - 判断是否是浮点型
- (BOOL)isPureFloat:(NSString *)string{
NSScanner* scan = [NSScannerscannerWithString:string];
float val;
return [scan scanFloat:&val] && [scan isAtEnd];
}