iOS开发 ☞ 数字格式化NSNumberFormatter

本文介绍了在iOS开发中如何使用NSNumberFormatter进行数字格式化,包括设置numberStyle为NSNumberFormatterDecimalStyle以保留三位小数并遵循特定进位规则,以及使用NSNumberFormatterRoundCeiling进行小数部分四舍五入的详细说明,并提供了一个来自StackOverflow的自定义格式化示例。

一、NSString与NSNumber的相互转化

//末尾的零会被舍去
- (nullable NSString *)stringFromNumber:(NSNumber *)number;
- (nullable NSNumber *)numberFromString:(NSString *)string;

可以通过设置NSNumberFormatter的numberStyle来控制转为字符串的格式

@property NSNumberFormatterStyle numberStyle;

它是一个枚举值

typedef NS_ENUM(NSUInteger, NSNumberFormatterStyle) {
    NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
    NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
    NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
    NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
    NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
    NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle,
    NSNumberFormatterOrdinalStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterOrdinalStyle,
    NSNumberFormatterCurrencyISOCodeStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyISOCodeStyle,
    NSNumberFormatterCurrencyPluralStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyPluralStyle,
    NSNumberFormatterCurrencyAccountingStyle NS_ENUM_AVAILABLE(10_11, 9_0) = kCFNumberFormatterCurrencyAccountingStyle,
};

1、NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle
特点:
1、保留三位小数
2、若小数点后面第三位是零,则看第四位,6及6以上进位,6以下不进位并且舍去零位。
3、若小数点后面第三位不为零,则第四位四舍五入进位。

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    f.numberStyle = NSNumberFormatterDecimalStyle;
    NSString *log = [f stringFromNumber:@111111111];
    //111,111,111
    NSLog(@"%@",log);

2、NSNumberFormatterRoundCeiling 小数部分四舍五入(只看小数点后面第一位)

二、自定义格式

看一来自stackOverFlow的例子

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setPositiveFormat:@"00.00E+00"];
NSNumber *number = [NSNumber numberWithFloat:121212.12];
NSString *convertNumber = [formatter stringFromNumber:number];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值