2位小数 ios开发_ios开发 doubel保留2位小数 - CSDN
  • 控制小数位数

    1.输出x.xx型(两位小数)

    double number = 5.212212;
    NSString *string = [NSString stringWithFormat:@"%.2f",number];

    输出: 5.21
    @”%.nf”需要几位n为几

    2、输出整数控制位数

      int num = 2;
      //输出3位,不足的话用0填充,够的话输出原数值
      NSString *str1 = [NSString stringWithFormat:@"%03d",num];
      NSString *str2 = [NSString stringWithFormat:@"%02d",num];

    输出: 002 ,02

    若 num = 2000 , 输出 2000,2000

    展开全文
  • 需求 如题的需求,再详细解释一下就是: ...平时在项目开发中,格式化小数乘字符串是时候,经常会保留2位小数处理,不足则用0补全,也就是在格式化方法中用 %.2f 作占位符,来占位小数。这样得出来的字符串...

    需求

    如题的需求,再详细解释一下就是: 1.如果有两位小数不为0则保留两位小数,eg: "0.23" 2.如果有一位小数不为0则保留一位小数,否则显示整数, eg: "0.2" "0" 也就是说,不能出现"0.20","0.00"这种情况。

    平时在项目开发中,格式化小数乘字符串是时候,经常会保留2位小数处理,不足则用0补全,也就是在格式化方法中用 %.2f 作占位符,来占位小数。这样得出来的字符串肯定是类似"X.XX"的字符串,且如果不足两位小数,都会用0来补全。

    然鹅现在的需求变了,要求保留两位小数,且能不显示0就不显示。

    解决方法

    OC:

    /**
     过滤器/ 将.2f格式化的字符串,去除末尾0
    
     @param numberStr .2f格式化后的字符串
     @return 去除末尾0之后的
     */
    - (NSString *)removeSuffix:(NSString *)numberStr{
        if (numberStr.length > 1) {
            
            if ([numberStr componentsSeparatedByString:@"."].count == 2) {
                NSString *last = [numberStr componentsSeparatedByString:@"."].lastObject;
                if ([last isEqualToString:@"00"]) {
                    numberStr = [numberStr substringToIndex:numberStr.length - (last.length + 1)];
                    return numberStr;
                }else{
                    if ([[last substringFromIndex:last.length -1] isEqualToString:@"0"]) {
                        numberStr = [numberStr substringToIndex:numberStr.length - 1];
                        return numberStr;
                    }
                }
            }
            return numberStr;
        }else{
            return nil;
        }
    }
    
    复制代码

    Swift

        /// 过滤器 将.2f格式化的字符串,去除末尾0
        ///
        /// - Parameter numberString: .2f格式化后的字符串
        /// - Returns: 去除末尾0之后的
        func removeSuffix(numberString : String) -> String {
            
            if numberString.count > 1 {
                let strs = numberString.components(separatedBy: ".")
                let last = strs.last!
                if strs.count == 2 {
                    if last == "00" {
                        
                        let indexEndOfText      = numberString.index(numberString.endIndex, offsetBy:-3)
                        return String(numberString[..<indexEndOfText])
                        
                    }else{
                        
                        let indexStartOfText    = numberString.index(numberString.endIndex, offsetBy:-1)
                        let str                 = numberString[indexStartOfText...]
                        let indexEndOfText      = numberString.index(numberString.endIndex, offsetBy:-1)
                        if str == "0" {
                            return String(numberString[..<indexEndOfText])
                        }
                        
                    }
                    
                }
                
                return numberString
                
            }else{
                return ""
            }
        }
    复制代码

    思路:1.先将小数按照.2f格式化处理成“0.00”; 2.然后再根据小数点".",切割字符串比较,判断最后的是不是“0”,是的话,直接切除掉;

    同样思路的也适用于格式化.3f的情况,判断方法中再加入“000”的判断,然后判断切割后的字符串。

    转载于:https://juejin.im/post/5c4eb124f265da616501ed72

    展开全文
  • 保留两位小数不进行四舍五入1). Nslog("@.2f",floor((2.34567)*100)/100); 第种方法传送门-(NSString *)notRounding:(float)price afterPoint:(int)position{ NSDecimalNumberHandler* roundingBehavior = ...

    最近项目中用到的小tip


    1. 保留两位小数不进行四舍五入

      1).

    Nslog("@.2f",floor((2.34567)*100)/100);
    

    第二种方法传送门

    -(NSString *)notRounding:(float)price afterPoint:(int)position{
        NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown scale:position raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
        NSDecimalNumber *ouncesDecimal;
        NSDecimalNumber *roundedOunces;
    
        ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:price];
        roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
        [ouncesDecimal release];
        return [NSString stringWithFormat:@"%@",roundedOunces];
    }
    展开全文
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

    这个是系统方法

    
    - (NSString*)Rounding:(float)number afterPoint:(NSInteger)position
    {
         NSDecimalNumberHandler *handler = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode: NSRoundPlain scale: position raiseOnExactness: NO raiseOnOverflow: NO raiseOnUnderflow:YES raiseOnDivideByZero: NO];
         NSDecimalNumber *floatDecimal = [[NSDecimalNumber alloc] initWithFloat: number];
         NSDecimalNumber *resultNumber = [floatDecimal decimalNumberByRoundingAccordingToBehavior:handler];
         return [NSString stringWithFormat:@"%@",resultNumber];
    }

     

    我用的是下面这个方法,注意⚠️只有在保留4位以下小数时四舍五入才正常

    - (NSString*)Rounding:(double)number afterPoint:(NSInteger)position
    {
        NSNumber *priceNum = [NSNumber numberWithDouble:number];
        NSString *string = [NSString stringWithFormat:@"%.10f",number];
        NSRange range = [string rangeOfString:@"."];
        if (range.location!=NSNotFound) {
            
            NSInteger loc = range.location+position+1;
            NSRange rangeS;
            if (string.length>loc) {
                rangeS = NSMakeRange(loc, 1);
                NSString *str = [string substringWithRange:rangeS];
                if (str!=nil&&[str floatValue]>=5.0f) {
                    priceNum = [NSNumber numberWithDouble:[[string stringByReplacingCharactersInRange:rangeS withString:@"9"] floatValue]];
                }
            }
            
        }
        if (position>4) {
            return @"";
        }
        
        if (position==1) {//保留1位
            return [NSString stringWithFormat:@"%.1f",round([priceNum floatValue]*1000000000000)/1000000000000];
        }else if(position==2){//保留2位
            return [NSString stringWithFormat:@"%.2f",round([priceNum floatValue]*1000000000000)/1000000000000];
        }else if(position==3){//保留3位
            return [NSString stringWithFormat:@"%.3f",round([priceNum floatValue]*1000000000000)/1000000000000];
        }else if(position==4){//保留4位
            return [NSString stringWithFormat:@"%.4f",round([priceNum floatValue]*1000000000000)/1000000000000];
        }    
        //默认保留2位
        return [NSString stringWithFormat:@"%.2f",round([priceNum floatValue]*1000000000000)/1000000000000];
    }

    使用方法:

    
    //保留小数点后2位,因为第3位小数大于5,所以第2位进1
    [self Rounding:100.11545  afterPoint:2]//结果返回 100.12
    
    //保留小数点后4位,因为第5位小数大于5,所以第4位进1
    [self Rounding: 100.11545  afterPoint:4]//100.1155
    
    //保留小数点后3位,因为第4位小数小于5,所以舍去
    [self Rounding: 100.11545  afterPoint:3]//100.115

     

    转载于:https://my.oschina.net/wenchengxu123/blog/1837421

    展开全文
  • //两整数 NSString * testStr_0 = [NSString stringWithFormat:@...//两位小数 NSString * testStr_1 = [NSString stringWithFormat:@"%0.2f",1]; NSString * testStr_2 = [NSString stringWithFormat:@"%0.2f",0....
  • 近日,项目中出现了后台返回数据,特别是价格时,小数位会出现很多9999的现象,而在谷歌浏览器测试后台返回数据时,正常显示是只有2位,后台也说只返给了2位小数给我,百思不得其解,只能认为是开发环境不同造成的...
  • 只需要实现textField的这个代理方法就可以实现 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSMutableString * ...
  • - (BOOL)validateNumber:(NSString*)number text:(NSString *)textFieldText floatCount:(NSInteger)floatCount { BOOL res = YES; NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCh...
  • 如何生成随机小数代码如下:- (float) randomBetween:(float)smallerNumber And:(float)largerNumber { //设置精确的位数 int precision = 100; //先取得他们之间的差值 float subtraction = largerNumber - ...
  • CGFloat f = 123.1234567890; NSString *str=[NSString stringWithFormat:@”%.2f”, f]; 如上所述:字符串格式化,格式出输入%.2f ,及表示两位小数如果取后3即 %.3f 后4即 %.4f
  • 输入一个double类型的数,返回也是double类型的,...感觉ios的double类型很不稳定,试过很多方法,包括转成nsstring,然后doublevalue,也不行,甚至写过小数点每一个数字乘以0.0**1,然后相加也是不行,大家帮我看看
  • [NSString stringWithFormat: @"%.2lf", total] 效果:
  • [self.btnEco setTitle:[NSString stringWithFormat:@"%0.1f",model.targetTemperature] forState:UIControlStateNormal];   ...float floatValue=123.0000 ...NSString *strValue=[NSString stringWithFormat:@"%0
  • 我的是限制小数点后8 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{  // 限制只能输入数字  BOOL isHaveDian = ...
  • ios 小数点后两

    2016-06-01 11:00:01
    1.输入小数点后两发现包含小数点,并且小数点在倒数第三就,如果再多就截掉。NSInteger loca = [x rangeOfString:@"."].location; if (loca+3<x.length&&loca>0) { self.checkoutCountTextField.text = [x ...
  • - (NSString *)numDisplayStandard:(NSInteger )typeNum  numVerification:(BOOL)isVerification{    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
  • 一直喜欢在纸上写代码和心得, 喜欢听笔划过时悉悉索索的声音, 似乎自己在创造什么了不得的东西.   这第一篇博客, 是纸上的随笔攀上了荧幕.
  • 保留两位小数(四舍五入) - (void)viewDidLoad { [super viewDidLoad]; // 有时候我们需要对数据保留两位小数,而且需要四舍五入,并且需要把末尾多余的0给去掉\ 下面提供两种方法来处理,推荐方法一,简单方便 ...
  • iOS开发运算

    2016-11-08 16:37:43
     直接操作这些进制数据的数据就是运算,在iOS开发中基本所有的运算都通过枚举声明传值的方式将运算的实现细节隐藏了起来: typedef NS_OPTIONS(NSUInteger, UIRectEdge) { UIRectEdgeNone =
  • iOS float 四舍五入保留后两
1 2 3 4 5 ... 20
收藏数 4,090
精华内容 1,636
关键字:

2位小数 ios开发