oc和swift实现算法:把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入

oc和swift实现算法:把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入,第1张

概述题目: 把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入 用Objective-C实现: ///把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入- (NSString *)number:(NSString *)x preciseDecimal:(NSUInteger)p {// 四舍五入 NSDecimalNumberHandler* 题目: 把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入


用Objective-C实现:
///把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入- (Nsstring *)number:(Nsstring *)x preciseDecimal:(NSUInteger)p {//    四舍五入    NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundplain scale:p raiSEOnExactness:NO raiSEOnOverflow:NO raiSEOnUnderflow:NO raiSEOndivIDeByZero:NO];    NSDecimalNumber *ouncesDecimal = [[NSDecimalNumber alloc] initWithDouble:[x doubleValue]];    NSDecimalNumber *roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior];//    生成需要精确的小数点格式,//    比如精确到小数点第3位,格式为“0.000”;精确到小数点第4位,格式为“0.0000”;//    也就是说精确到第几位,小数点后面就有几个“0”    NSMutableString *formatterString = [NSMutableString stringWithString:@"0."];    for (NSInteger i = 0; i < p; ++i) {        [formatterString appendString:@"0"];    }    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];//    设置生成好的格式,    [formatter setPositiveFormat:formatterString];//    然后把这个number 对象格式化成我们需要的格式,//    最后以string 类型返回结果。    return [formatter stringFromNumber:roundedOunces];}


用swift实现:
///把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入    func preciseDecimal(x : String,p : Int) -> String {//        为了安全要判空        if (Double(x) != nil) {//         四舍五入            let decimalNumberHandle : NSDecimalNumberHandler = NSDecimalNumberHandler(roundingMode: NSDecimalNumber.RoundingMode(rawValue: 0)!,scale: Int16(p),raiSEOnExactness: false,raiSEOnOverflow: false,raiSEOnUnderflow: false,raiSEOndivIDeByZero: false)            let decimaleNumber : NSDecimalNumber = NSDecimalNumber(value: Double(x)!)            let resultNumber : NSDecimalNumber = decimaleNumber.rounding(accordingToBehavior: decimalNumberHandle)//          生成需要精确的小数点格式,//          比如精确到小数点第3位,格式为“0.000”;精确到小数点第4位,格式为“0.0000”;//          也就是说精确到第几位,小数点后面就有几个“0”            var formatterString : String = "0."            let count : Int = (p < 0 ? 0 : p)            for _ in 0 ..< count {                formatterString.append("0")            }            let formatter : NumberFormatter = NumberFormatter()            //      设置生成好的格式,NSNumberFormatter 对象会按精确度自动四舍五入            formatter.positiveFormat = formatterString//          然后把这个number 对象格式化成我们需要的格式,//          最后以string 类型返回结果。            return formatter.string(from: resultNumber)!        }        return "0"    }
总结

以上是内存溢出为你收集整理的oc和swift实现算法:把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入全部内容,希望文章能够帮你解决oc和swift实现算法:把 x 数字精确到小数点后第 p 位,不足 p 位补 0,然后四舍五入所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1055981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存