欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS中NSNumberFormatter的介绍与用法

程序员文章站 2022-04-11 09:09:40
前言 ios中nsdateformatter用的范围一般来说比较广泛,不过相对于处理数字而言,很少用到nsnumberformatter,nsnumberformatte...

前言

ios中nsdateformatter用的范围一般来说比较广泛,不过相对于处理数字而言,很少用到nsnumberformatter,nsnumberformatter中有很多枚举类型,会为实际开发节省时间.

nsnumberformatter可以用来处理nsstring和nsnumber之间的转化,可以满足基本的数字形式的转化。下面话不多说了,来一起看看详细的介绍吧

1:使用+ localizedstringfromnumber:numberstyle:本地化方法格式化nsnumber到nsstring

四舍五入到整数

 nsnumber *number = @(123423.5563);
 nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformatternostyle];
// 123424

货币数字形式

 nsnumber *number = @(12342323.5563);
 nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformatterdecimalstyle];
 // 12,342,323.556 

货币的形式,带本地化的货币符号

nsnumber *number = @(12342323.5563);
 nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformattercurrencystyle];
// ¥12,342,323.56

百分数形式,并且四舍五入到百分比的整数部分

nsnumber *number = @(12342323.5563);
nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformatterpercentstyle];
// 1,234,232,356%

科学计数形式

nsnumber *number = @(12342323.55665); nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformatterscientificstyle];
// 1.234232355665e7

本地化拼写形式

nsnumber *number = @(12342323.55665);
nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformatterspelloutstyle];
// 三十四万二千三百二十三点五五六六五

序数形式

nsnumber *number = @(12342323.55665);
nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformatterordinalstyle];
// 第1234,2324

货币形式 显示iso分配的货币符号

nsnumber *number = @(12342323.55665);
nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformattercurrencyisocodestyle];
// cny12,342,323.56

货币形式

nsnumber *number = @(12342323.55665);
 nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformattercurrencypluralstyle];
// 12,342,323.56人民币

会计形式

nsnumber *number = @(12342323.55665);
nsstring *numstr1 = [nsnumberformatter localizedstringfromnumber:number numberstyle:nsnumberformattercurrencyaccountingstyle];
// ¥12,342,323.56

2:初始化nsnumberformatter对象,使用- (nsnumber *)numberfromstring:(nsstring *)string;定制格式化nsnumber到nsstring

不指定任何样式(numstyle),默认(nsnumberformatternostyle)四舍五入,其他的样式同以上1中所介绍的

 nsnumber *number = @(12342323.55665);
 nsnumberformatter *formatter = [[nsnumberformatter alloc]init];
// 指定货币样式
 formatter.numberstyle = nsnumberformatterdecimalstyle;
// 自定义样式
 [formatter setpositiveformat:@"###0.###"];
// 数字之间的分隔符
 [formatter setdecimalseparator:@":"];
 [formatter setcurrencydecimalseparator:@","];
// 前缀符号
 formatter.positiveprefix = @"!";
// 后缀符号
 formatter.positivesuffix = @"元";
// 间隙中添加的符号
 formatter.paddingcharacter = @"?";
// 格式的宽度
 formatter.formatwidth = 15;
// 最少展示两位小数
 formatter.minimumfractiondigits = 2;
// 最多展示三位整数
 formatter.maximumintegerdigits = 5;
 nsstring *numstr = [formatter stringfromnumber:number];
// ??????!323:557元

百分比样式展示

nsnumberformatter *numberformatter = [[nsnumberformatter alloc] init];
[numberformatter setpositiveformat:@"0.00%;0.00%;-0.00%"];
nslog(@"%@", [numberformatter stringfromnumber:@4.0]);
// output: "400.00%".

// 本地化
nsnumberformatter *numberformatter = [[nsnumberformatter alloc] init];
[numberformatter setnumberstyle:nsnumberformatterpercentstyle];
 
nslocale *uslocale = [[nslocale alloc] initwithlocaleidentifier:@"en_us"];[numberformatter setlocale:uslocale];
nslog(@"en_us: %@", [numberformatter stringfromnumber:@4.0]);
// output: "en_us: 400%".
 
nslocale *falocale = [[nslocale alloc] initwithlocaleidentifier:@"fa_ir"];
[numberformatter setlocale:falocale];
nslog(@"fa_ir: %@", [numberformatter stringfromnumber:@4.0]);
// output: "fa_ir: ٪۴۰۰."

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。