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:一亿二千三百四十五万六千七百八十九

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

  • 相关阅读:
    Win7 usb无法识别,感叹号,没有盘符
    MVMM 中的ViewModel 实现IsLoading进度条
    菜鸟喜欢的C# 入门认识和添加,修改,删除 文件夹 文件 大全(转)
    (转)windows负载平衡
    关于刷新页面和用法.(转)
    bat文件调用dos命令 (dos淘金)
    flash新闻轮转:图片和链接从数据库读取之我见
    dling 624+and 2100ap && wireless card&wifi
    html与css小技巧
    小型系统数据库安全小结
  • 原文地址:https://www.cnblogs.com/A--G/p/4721368.html
Copyright © 2011-2022 走看看