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

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

  • 相关阅读:
    BI 商业智能理解结构图
    编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
    C#程序读取数据库中包含null的列的值
    C#程序中从数据库取数据时需注意数据类型之间的对应,int16int32int64
    在Eclipse中启动tomcat后访问tomcat首页时出现404
    JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    spring环境搭建
    Struts2环境搭建
    MySQL中case then用法
    在1-10中选择一个数,输出x+xx+xxx+xxx....x之和,如:数字为2,则2+22=24
  • 原文地址:https://www.cnblogs.com/A--G/p/4721368.html
Copyright © 2011-2022 走看看