zoukankan      html  css  js  c++  java
  • NSNumberFormatter

    NSNumberFormatter看起来跟NSDateFormatter有些类似,它主要的工作就是解决一些四舍五入,数据格式化显示的问题.

    在不了解NSNumberFormatter之前我们我们进行四舍五入的方式就是,先数据移位到需要保留的位置,然后加0.5取整,再移位.比如123.456,如果我们需要直接取整就加0.5然后保留整数.

    即:123.456+0.5=123.956; (int)123.956 = 123;

    如果我需要的是保留一位小数,那么就是先乘10左移然后取整还原,

    即:123.456*10+0.5=1235.06;(int)1235.06 = 1235;再右移得123.5;

    但是使用NSNumberFormatter,只需要使用类方法

    + (NSString *)localizedStringFromNumber:(NSNumber *)num numberStyle:(NSNumberFormatterStyle)nstyle;便可更简单的得到.

    另还有两个方法

    - (nullable NSString *)stringFromNumber:(NSNumber *)number;

    - (nullable NSNumber *)numberFromString:(NSString *)string;

       NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle, // 四舍五入的整数

        NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,// 小数形式,保留3位

        NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,// 货币形式 -- 本地化,默认$符号,两位小数

        NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,// 百分数形式      乘以100取整加%

        NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,// 科学计数       即123.4567 = 1.23456

        NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle,

        NSNumberFormatterOrdinalStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = kCFNumberFormatterOrdinalStyle,// 序数形式 如123th

        NSNumberFormatterCurrencyISOCodeStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = kCFNumberFormatterCurrencyISOCodeStyle,

        NSNumberFormatterCurrencyPluralStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = kCFNumberFormatterCurrencyPluralStyle,// 货币形式用以US结尾

        NSNumberFormatterCurrencyAccountingStyle API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) = kCFNumberFormatterCurrencyAccountingStyle,// 会计计数跟NSNumberFormatterCurrencyStyle相似

    // 小数点样式

        numberFormatter.decimalSeparator = @".";

    // 指定符号,与我们在前面类方法中说明的一致

        NSLog(@"货币代码%@",numberFormatter.currencyCode);                     // 货币代码USD

        NSLog(@"货币符号%@",numberFormatter.currencySymbol);                   // 货币符号$

        NSLog(@"国际货币符号%@",numberFormatter.internationalCurrencySymbol);   // 国际货币符号USD

        NSLog(@"百分比符号%@",numberFormatter.percentSymbol);                   // 百分比符号%

        NSLog(@"千分号符号%@",numberFormatter.perMillSymbol);                   // 千分号符号‰

        NSLog(@"减号符号%@",numberFormatter.minusSign);                         // 减号符号-

        NSLog(@"加号符号%@",numberFormatter.plusSign);                          // 加号符号+

        NSLog(@"指数符号%@",numberFormatter.exponentSymbol);                    // 指数符号E

        

        // 零的样式

        numberFormatter.zeroSymbol       = @"-";

       // 填充位置

        numberFormatter.paddingPosition = kCFNumberFormatterPadBeforeSuffix;

        numberFormatter.positiveSuffix = @"元";

        

        NSLog(@"%@",[numberFormatter numberFromString:@"10000000元"]);  // 10000000

     // 整数最多位数

        numberFormatter.maximumIntegerDigits = 10;

        // 整数最少位数

        numberFormatter.minimumIntegerDigits = 2;

        // 小数位最多位数

        numberFormatter.maximumFractionDigits = 3;

        // 小数位最少位数

        numberFormatter.minimumFractionDigits = 1;

        // 数字分割的尺寸

        numberFormatter.groupingSize = 4;

           // 除了groupingSize决定的尺寸外,其他数字位分割的尺寸

        numberFormatter.secondaryGroupingSize = 2;

        // 最大有效数字个数

        numberFormatter.maximumSignificantDigits = 12;

        // 最少有效数字个数

        numberFormatter.minimumSignificantDigits = 3;

        NSLog(@"正数%@,负数%@",[numberFormatter stringFromNumber:@(+12135230.2346)],[numberFormatter stringFromNumber:@(-12135231.2346)]);  // 正数!12,13,5230.2346元,负数@12,13,5231.2346亏

        NSLog(@"零 = %@",[numberFormatter stringFromNumber:@(0)]); //  零 = -

        // 舍入值,比如以10为进位值,那么156就进位为160,154进位为150

        numberFormatter.roundingIncrement = @10;

    提高技能如同提升自信心。
  • 相关阅读:
    pkg_resources.DistributionNotFound: The 'catkin-pkg==0.4.9' distribution was not found
    gsl库安装
    json ubuntu下安装
    系统安装情况以及深度学习环境搭建
    ros 编程习惯
    ubuntu系统ftp连接 以及ssh连接
    redmine问题
    maven仓库私服配置
    SVN配置管理(trunk、branches、tags)
    Gitolite配置管理和GIT基本操作
  • 原文地址:https://www.cnblogs.com/chims-liu-touch/p/7953582.html
Copyright © 2011-2022 走看看