zoukankan      html  css  js  c++  java
  • 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:一亿二千三百四十五万六千七百八十九

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

  • 相关阅读:
    这2天参加WinHEC大会,园子里以有很多介绍,就不多说了,会上用手机录了一段windows 最新触摸屏操作技术演示,可以看看
    自启动U盘,一个会流行的好玩意
    为什么数据库导入是自动增量属性自动消失乐呢?
    网络带宽利用率的一般计算方法
    防止ARP病毒的一个小窍门
    Windows 系统补丁管理策略
    PDC大会就要召开了,园里有去的吗,看到一片文章,不知道windows7是否真的很好
    门户框架在项目和产品中的使用心得
    这段时间开发了一个共享软件,主要做IP资源管理的(SmartIPView),大家有兴趣可以看看,或给指点指点
    OpenGL自学教程1(窗口建立)
  • 原文地址:https://www.cnblogs.com/A--G/p/4721368.html
Copyright © 2011-2022 走看看