iOS 下只能输入浮点数以及限制浮点数的位数

代码如下:

#pragma mark -- 按照要求判断经纬度,不能为整数,小数位数不能大于6
*
 * string 输入的数字字符串
 * limit  小数位数限制
 */
- (BOOL)judgeNumberWithString:(NSString *)string andFloatScanLimit:(int)limit{
    NSScanner *scan = [NSScanner scannerWithString:string];
    int val;
    BOOL isInt = [scan scanInt:&val] && [scan isAtEnd];
    if (isInt) {
        return NO;
    }
    
    NSString *pre = [NSString stringWithFormat:@"^[0-9]+(\\.[0-9]{1,%d})?$",limit <= 0 ? 1:limit];
    NSPredicate *numPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",pre];
    BOOL isGreatThanSixNumber = [numPre evaluateWithObject:string];
    return isGreatThanSixNumber?YES:NO;
}

这个需求来源于:项目中要输入经纬度,经纬度的值只能为浮点数且小数后的位数控制在1-6
上面代码中,第一部分判断是不是整数,如果是直接返回 NO,不是则继续下一步。
第二部分用来判断浮点数的位数,@"^[0-9]+(\\.[0-9]{1,6})?$"中的{1,6}表示浮点数小数后的位数最少1位最多只能有6位。

由此延伸出来的应用范围,比如金额输入以及其它数字输入内容限制。

你可能感兴趣的:(iOS 下只能输入浮点数以及限制浮点数的位数)