iOS Objective-C NSNumberFormatter格式化

通过NSNumberFormatter,可以将NSNumberNSString相互转换

- (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,小数点样式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值