服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - iOS中NSNumberFormatter的介绍与用法

iOS中NSNumberFormatter的介绍与用法

2021-05-13 16:03Brucezhang1 IOS

NSNumberFormatter 应该可以满足你对数据形式的一般需求,值得了解一下,下面这篇文章主要给大家介绍了关于iOS中NSNumberFormatter的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

前言

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

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

1:使用+ localizedStringFromNumber:numberStyle:本地化方法格式化NSNumber到NSString

四舍五入到整数

?
1
2
3
NSNumber *number = @(123423.5563);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterNoStyle];
// 123424

货币数字形式

?
1
2
3
NSNumber *number = @(12342323.5563);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterDecimalStyle];
// 12,342,323.556

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

?
1
2
3
NSNumber *number = @(12342323.5563);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyStyle];
// ¥12,342,323.56

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

?
1
2
3
NSNumber *number = @(12342323.5563);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterPercentStyle];
// 1,234,232,356%

科学计数形式

?
1
2
NSNumber *number = @(12342323.55665); NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterScientificStyle];
// 1.234232355665E7

本地化拼写形式

?
1
2
3
NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterSpellOutStyle];
// 三十四万二千三百二十三点五五六六五

序数形式

?
1
2
3
NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterOrdinalStyle];
// 第1234,2324

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

?
1
2
3
NSNumber *number = @(12342323.55665);
NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyISOCodeStyle];
// CNY12,342,323.56

货币形式

?
1
2
3
NSNumber *number = @(12342323.55665);
 NSString *numStr1 = [NSNumberFormatter localizedStringFromNumber:number numberStyle:NSNumberFormatterCurrencyPluralStyle];
// 12,342,323.56人民币

会计形式

?
1
2
3
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中所介绍的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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元

百分比样式展示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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: ٪۴۰۰."

总结

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

原文链接:https://www.jianshu.com/p/95952b145a8e

延伸 · 阅读

精彩推荐
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25