您的位置:首页 > 其它

识别float类型,小数点保留自动识别

2016-05-13 13:55 253 查看
创建一个类

MySelfFrame.h

+ (NSString *)ifNumberIsFloat:(float)num Least:(NSInteger)least;

MySelfFrame.h

+ (NSString *)ifNumberIsFloat:(float)num Least:(NSInteger)least
{
NSString * str;
NSInteger first = (NSInteger)(num*100)%100;
if (first > 0) {
if (first%10 == 0) {
str = [NSString stringWithFormat:@"%.1f",num];
return str;
}else {
str = [NSString stringWithFormat:@"%.2f",num];
return str;
}
}else{
NSInteger three = (NSInteger)(num*1000)%1000;
if (three%10 == 0) {
str = [NSString stringWithFormat:@"%.0f",num];
return str;
}else{
str = [NSString stringWithFormat:@"%.2f",num];
return str;
}
}

}

使用的时候只需要调用接口即可

float num = 2.10
NSString * str = [ViewController ifNumberIsFloat:num Least:1]//least是最少保留的位数


二、另一种方法 效率高了很多 并且代码量更少

NSString * numStr = [NSString stringWithFormat:@"%.2f",num];
NSInteger index = [numStr rangeOfString:@"."].location;
NSString * integerStr = [numStr substringToIndex:index];

NSString * floatStr = [[numStr substringFromIndex:index] stringByReplacingOccurrencesOfString:@"." withString:@""];
if ([floatStr integerValue] > 0) {
NSInteger index2 = [floatStr rangeOfString:@"0"].location;
if (index2 < 3) {
NSInteger getDex = index2==0?2:1;
floatStr = [floatStr substringToIndex:getDex];
}
}else if ([floatStr integerValue] == 0){
floatStr = @"";
}

NSString * lastStr = floatStr.length > 0?[NSString stringWithFormat:@"%@.%@",integerStr,floatStr]:integerStr;
return lastStr;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: