美文网首页
iOS 去除字符串尾部多余的0

iOS 去除字符串尾部多余的0

作者: Amuxiaomu | 来源:发表于2022-01-11 17:05 被阅读0次

需求:
3.7800 => 3.78
4.0000 => 4

方法1:字符串截取

- (NSString *)removeExcessZeros:(NSString *)value {
    if ([value rangeOfString:@"."].length != 0) {
        [value rangeOfString:@"0" options:1];
        while ([[value substringWithRange:NSMakeRange(value.length - 1, 1)] isEqualToString:@"0"]) {
            value = [value substringWithRange:NSMakeRange(0, value.length - 1)];
        }
        // 考虑到如果小数点后面都为0的情况.也需要将小数点移除
        if ([[value substringWithRange:NSMakeRange(value.length - 1, 1)] isEqualToString:@"."]) {
            value = [value substringWithRange:NSMakeRange(0, value.length - 1)];
        }
    }

    return value;
}

方法2: 利用NSNumberFormatter

- (NSString *)removeExcessZeros:(NSString *)value {
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    numberFormatter.minimumFractionDigits = 0;          // 最小保留位数
    numberFormatter.maximumFractionDigits = self.digit; // 最高保留位数
    
    value = [numberFormatter stringFromNumber:@(value.doubleValue)];

    return value;
}

方法3: 通过floatValue包装成NSNumber,(不能通过doubleValue,因为2转换成doubleValue可能会变成2.000000001,如果去后面0就会去不掉). 缺点是doubleValue使用不了,可适用于精确度小的数据

- (NSString *)removeExcessZeros:(NSString *)value {
    value = @(value.floatValue).description;
    return value;
}

相关文章

网友评论

      本文标题:iOS 去除字符串尾部多余的0

      本文链接:https://www.haomeiwen.com/subject/ilzbcrtx.html