通过NSNumberFormatter
,可以将NSNumber
和NSString
相互转换
- (nullable NSString *)stringFromNumber:(NSNumber *)number;
- (nullable NSNumber *)numberFromString:(NSString *)string;
numberStyle
,输出不同的数字格式
// 原值123456.654321
enum NSNumberFormatterStyle {
NSNumberFormatterNoStyle, // 123457,默认格式,去掉小数点
NSNumberFormatterDecimalStyle, // 123,456.654,以国际化格式输出,保留3位小数
NSNumberFormatterCurrencyStyle, // ¥123,456.65,以货币通用格式输出,保留2位小数
NSNumberFormatterPercentStyle, // 12,345,665%,以百分制形式输出,乘以100,同时在最后加上百分号
NSNumberFormatterScientificStyle, // 1.23456654321E5,以科学计数法输出
NSNumberFormatterSpellOutStyle, // 十二万三千四百五十六点六五四三二一,原值的中文表示
NSNumberFormatterOrdinalStyle, // 第123,457
NSNumberFormatterCurrencyISOCodeStyle, // CNY 123,456.65
NSNumberFormatterCurrencyPluralStyle, // 123,456.65 人民币
NSNumberFormatterCurrencyAccountingStyle // ¥123,456.65
}
roundingMode
,取整方式
NSNumberFormatterRoundingMode {
NSNumberFormatterRoundCeiling, // 向上取整
NSNumberFormatterRoundFloor, // 向下取整
NSNumberFormatterRoundDown, // 向0的方向取整
NSNumberFormatterRoundUp, // 远离0的方向取整
NSNumberFormatterRoundHalfEven, // 若是奇数则四舍五入,若是偶数则五舍六入
NSNumberFormatterRoundHalfDown, // 五舍六入,负数先取绝对值再五舍六入再负数
NSNumberFormatterRoundHalfUp // 四舍五入
}
positivePrefix
,前缀符号
positiveSuffix
,后缀符号
negativePrefix
,前缀符号
negativeSuffix
,后缀符号
// 原值123456.654321,输出 $123457元
formatter.positivePrefix = @"$"; // 前缀符号
formatter.positiveSuffix = @"元"; // 后缀符号
// 原值-123456.654321,输出^123457元亏损
formatter.negativePrefix = @"^"; // 前缀符号
formatter.negativeSuffix = @"元亏损"; // 后缀符号
formatWidth
,格式宽度
paddingCharacter
,填充符
paddingPosition
,填充位置
enum NSNumberFormatterPadPosition {
NSNumberFormatterPadBeforePrefix,
NSNumberFormatterPadAfterPrefix,
NSNumberFormatterPadBeforeSuffix,
NSNumberFormatterPadBeforeSuffix
}
示例代码
NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.formatWidth = 10;
formatter.paddingCharacter = @"#";
formatter.positivePrefix = @"$"; // 前缀符号
formatter.positiveSuffix = @"元"; // 后缀符号
// $#####123元
formatter.paddingPosition = NSNumberFormatterPadAfterPrefix;
// #####$123元
formatter.paddingPosition = NSNumberFormatterPadBeforePrefix;
// $123#####元
formatter.paddingPosition = NSNumberFormatterPadBeforeSuffix;
// $123元#####
formatter.paddingPosition = NSNumberFormatterPadAfterSuffix;
groupingSize
,数字分割的大小
groupingSeparator
,数字分割符
// 原值输出123,456,789,格式化后输出1;2345;6789
formatter.groupingSize = 4;
formatter.groupingSeparator = @";";
maximumFractionDigits
,小数位最少位数
minimumFractionDigits
,小数位最多位数
maximumIntegerDigits
,整数最多位数
minimumIntegerDigits
,整数最少位数
decimalSeparator
,小数点样式