iOS返回一个前面没有0,小数点后保留两位的数字字符串_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > iOS返回一个前面没有0,小数点后保留两位的数字字符串

iOS返回一个前面没有0,小数点后保留两位的数字字符串

 2015/4/14 12:26:20  金辰九零三  程序员俱乐部  我要评论(0)
  • 摘要:/**处理一个数字加小数点的字符串,前面无0,保留两位。网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的。*/-(NSString*)getTheCorrectNum:(NSString*)tempString{//先判断第一位是不是.,是.补0if([tempStringhasPrefix:@"."]){tempString=[NSStringstringWithFormat:@"0%@",tempString];
  • 标签:iOS 一个 字符串
/*
 * 处理一个数字加小数点的字符串,前面无0,保留两位。网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的。
 */
-(NSString*)getTheCorrectNum:(NSString*)tempString
{
    //先判断第一位是不是 . ,是 . 补0
    if ([tempString hasPrefix:@"."]) {
        tempString = [NSString stringWithFormat:@"0%@",tempString];
    }
    //计算截取的长度
    NSUInteger endLength = tempString.length;
    //判断字符串是否包含 .
    if ([tempString containsString:@"."]) {
        //取得 . 的位置
        NSRange pointRange = [tempString rangeOfString:@"."];
        NSLog(@"%lu",pointRange.location);
        //判断 . 后面有几位
        NSUInteger f = tempString.length - 1 - pointRange.location;
        //如果大于2位就截取字符串保留两位,如果小于两位,直接截取
        if (f > 2) {
            endLength = pointRange.location + 2;
        }
    }
    //先将tempString转换成char型数组
    NSUInteger start = 0;
    const char *tempChar = [tempString UTF8String];
    //遍历,去除取得第一位不是0的位置
    for (int i = 0; i < tempString.length; i++) {
        if (tempChar[i] == '0') {
            start++;
        }else {
            break;
        }
    }
    //如果第一个字母为 . start后退一位
    if (tempChar[start] == '.') {
        start--;
    }
    //根据最终的开始位置,计算长度,并截取
    NSRange range = {start,endLength-start};
    tempString = [tempString substringWithRange:range];
    return tempString;
}

 

发表评论
用户名: 匿名