美文网首页
iOS 字符串转换数字单位 不四舍五入

iOS 字符串转换数字单位 不四舍五入

作者: 昵称已经被使用换个别的 | 来源:发表于2020-06-29 10:50 被阅读0次
    /**
     初始化方法
     
     @param roundingMode 舍入方式{
    NSRoundDown,    // Always down == truncate  //只舍不入
    
        NSRoundUp,      // Always up    // 只入不舍
    
        NSRoundBankers  // on a tie round so last digit is even  貌似四舍五入
    }
     @param scale 小数点后舍入值的位数。
     @param exact 精度错误处理;YES:如果出现错误,将引发异常,NO:忽略错误并将控制权放回给调用者。
     @param overflow 溢出错误处理;YES:如果出现错误,将引发异常,NO:忽略错误并将控制权放回给调用者。
     @param underflow 下溢错误处理;YES:如果出现错误,将引发异常,NO:忽略错误并将控制权放回给调用者。
     @param divideByZero 除以0的错误处理;YES:如果出现错误,将引发异常,NO:忽略错误并将控制权放回给调用者。
     @return NSDecimalNumberHandler对象
     */
    - (NSString *)stringCount:(NSString *)string unit:(NSInteger)unit{
        if (!string || !string.length) {
            return @"";
        }
        NSString *tempStr;
        NSInteger scaleNum;
        NSInteger intValue = string.integerValue;
        if (intValue>=10000) {
            if (intValue%10>0) {
                scaleNum = 4;
            }else if (intValue%100>0){
                scaleNum = 3;
            }else if (intValue%1000>0){
                scaleNum = 2;
            }else if (intValue%10000>0){
                scaleNum = 1;
            }else{
                scaleNum = 0;
            }
            NSDecimalNumberHandler *hander = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundDown
                                                                                                   scale:scaleNum
                                                                                        raiseOnExactness:NO
                                                                                         raiseOnOverflow:NO
                                                                                        raiseOnUnderflow:NO
                                                                                     raiseOnDivideByZero:NO];
            
            
            NSDecimalNumber *num = [[NSDecimalNumber decimalNumberWithString:string] decimalNumberByDividingBy :[NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%ld",(long)unit]] withBehavior:hander];
            return [NSString stringWithFormat:@"%@",num];
        }else{
            return string;
        }
        
        return tempStr;
    }
    

    相关文章

      网友评论

          本文标题:iOS 字符串转换数字单位 不四舍五入

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