iOS小数四舍五入总结

iOS项目里,涉及到double类型是数据,经常会用到四舍五入这样的取值方式,网上查阅资料之后,经常会不起作用,最终把有效的方法,总结了一下。
OC:

/**
 四舍五入字符串

 @param round 小数位 eg: 2
 @param numberString 数字 eg 0.125
 @return 四舍五入之后的 eg: 0.13
 */
- (double )roundNumberStringWithRound:(NSInteger)round numberString:(NSString *)numberString{
    
    if (numberString == nil) {
        return 0;
    }
    NSDecimalNumberHandler *roundingBehavior    = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:round raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
    NSDecimalNumber *aDN                        = [[NSDecimalNumber alloc] initWithString:numberString];
    NSDecimalNumber *resultDN                   = [aDN decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
    return resultDN.doubleValue;
}

Swift:

    /// 四舍五入2位小数小数
    ///
    /// - round: 小数位(默认2位小数)
    /// - Parameter numberString: 格式化之前 eg 0.125
    /// - Returns: 格式化之后 eg: 0.13
    func roundNumberString(round:Int = 2, numberString : String) -> Double {
        if numberString.isEmpty || round == 0 {
            return 0.0
        }
        
        let roudingBehavior     = NSDecimalNumberHandler(roundingMode: .plain, scale: Int16(round), raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: false)
        let aDn                 = NSDecimalNumber(string: numberString)
        let resultDn            = aDn.rounding(accordingToBehavior: roudingBehavior)
        return resultDn.doubleValue
        
    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天上午,我们去江都市邵伯镇去拜年,在一路上,我发现和去年的风景大不一样,而且邵伯河不但是波光粼粼,更是清澈...
    徐菲m阅读 314评论 0 1
  • 天空有它本来的颜色,如同你有你本来的心地。 这和他人无关,和你经历什么事情无关。只和你与生俱来的本能相关。从出生那...
    ZoeeLebon阅读 257评论 0 0
  • 一、redis简介 官网是这样介绍redis的:Redis is an opensource(BSDlicense...
    Harlequin_op阅读 1,036评论 0 0
  • 6.14-7.15整整一个多月的世界杯,看的很过瘾,看到了C罗、梅西、莫德里奇等率领的葡萄牙阿根廷克罗地亚纠纠...
    姚常春阅读 245评论 0 0
  • 大凡追求上进的人无不致力于学习,或通过广泛读书,或通过社会实践,或者通过他人言传身教。 这里只谈向他人学习这一方面...
    哥舒阅读 945评论 0 0