截取小数点前后位数

2016-09-27  本文已影响66人  sfandy
需求:显示需要保留小数点前两位,小数点后两位。
 /**
 *  截取
 *
 *  @param text   文本
 *  @param preInt 保留小数点前几位
 *  @param decInt 保留小数点后几位
 */
- (NSString*)subStringWithString:(NSString*)text subPre:(NSInteger)preInt subDec:(NSInteger)decInt{
    NSString *result = @"";
    if (!text || [text isEqualToString:@""]) {
        return result;
    }
    NSArray *array = [text componentsSeparatedByString:@"."];
    if (!array || array.count<=0) {
        return result;
    }
  //有小数(包含.12、0.12、12.、12.0的情况)
  if (array.count==2) {
      NSString *intValue = @"";
      NSString *floatValue = @"";
      NSString *intText = [array objectAtIndex:0];
      NSString *floatText = [array objectAtIndex:1];

      intValue = intText.length>=preInt ? [intText substringWithRange:NSMakeRange((intText.length - preInt), preInt)]:intText;
      floatValue = floatText.length>=decInt ? [floatText substringWithRange:NSMakeRange(0, decInt)]:floatText;

      intValue = [intValue isEqualToString:@""]? @"0":intValue;
      floatValue = [floatValue isEqualToString:@""]? @"0":floatValue;

   if ([intValue isEqualToString:@"0"] && [floatValue isEqualToString:@"0"]) {
       result = @"";
    }else{
       result = [NSString stringWithFormat:@"%@.%@",intValue,floatValue];
    }
  }

  //没有小数
  if (array.count==1) {
      NSString *intText = [array objectAtIndex:0];
      result = intText.length>=preInt ? [intText substringWithRange:NSMakeRange((intText.length - preInt), preInt)]:text;
  }

  return result;
}
上一篇下一篇

猜你喜欢

热点阅读