• NSNumber 转 NSString


                   

    之前number 转string时候调用stringValue,后来发现未完全转

     1 NSNumber * a_num = [NSNumber numberWithInteger: 12345];

    2 NSString *value_str = [num stringValue];(不推荐) 

    官方推荐用这个方法, localizedStringFromNumber

      NSString *num_str = [NSNumberFormatter localizedStringFromNumber:num numberStyle:NSNumberFormatterNoStyle];  

    通过NSNumberFormatter,可以设置NSNumber输出的格式。例如如下代码:

     

     1         NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
     2 
     3  
     4         formatter.numberStyle = NSNumberFormatterDecimalStyle;
     5 
     6  
     7         NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123456789]];
     8 
     9  
    10         NSLog(@"Formatted number string:%@",string);

      输出结果为:[1223:403] Formatted number string:123,456,789

     

    其中NSNumberFormatter类有个属性numberStyle,它是一个枚举型,设置不同的值可以输出不同的数字格式。该枚举包括:

     

     1 enum {
     2 
     3     NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle, //无格式
     4 
     5     NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle, //小数型
     6 
     7     NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle, //货币型
     8 
     9     NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,  //百分比型
    10 
    11     NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle, //科学计数型
    12 
    13     NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle  //全拼
    14 
    15 y    
    16 
    17     NSNumberFormatterRoundCeiling = kCFNumberFormatterRoundCeiling,//四舍五入,原值2.7999999999,直接输出3 
    18     NSNumberFormatterRoundFloor = kCFNumberFormatterRoundFloor,//保留小数输出2.8 正是想要的
    19     NSNumberFormatterRoundDown = kCFNumberFormatterRoundDown,//加上了人民币标志,原值输出¥2.8
    20     NSNumberFormatterRoundUp = kCFNumberFormatterRoundUp,//本身数值乘以100后用百分号表示,输出280%
    21     NSNumberFormatterRoundHalfEven = kCFNumberFormatterRoundHalfEven,//原值表示,输出    NSNumberFormatterRoundHalfDown = kCFNumberFormatterRoundHalfDown,//原值的中文表示,输出二点七九九九。。。。
    22     NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp //原值中文表示,输出第三 
    23 };
    24 
    25 typedef NSUInteger NSNumberFormatterStyle;

    各个枚举对应输出数字格式的效果如下:

     

    [1243:403] Formatted number string:123456789

     

    [1243:403] Formatted number string:123,456,789

     

    [1243:403] Formatted number string:123,456,789.00

     

    [1243:403] Formatted number string:-539,222,988%

     

    [1243:403] Formatted number string:1.23456789E8

     

    [1243:403] Formatted number string:一亿二千三百四十五万六千七百八十九

    其中第三项和最后一项的输出会根据系统设置的语言区域的不同而不同

  • 相关阅读:
    [导入]自由的生活
    [导入]宁静
    [导入]书店
    [导入]娶老婆的15条金科玉律
    [导入]静静的日子
    [导入]生活无聊的日子
    [导入]新的任务
    [导入]问题:我是一个内向的男生。请问怎么追求自己喜欢的女孩
    [导入]奋斗
    java 多种方式文件读取
  • 原文地址:https://www.cnblogs.com/A--G/p/4721368.html
Copyright © 2020-2023  润新知