NSNumberFormatter的使用



textField的代理方法拼接全局变量_textFieldText

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
    if (_istextField) {
        // 123,4.05(全局_textFieldText1234不拼接)
        if ([textField.text containsString:@"."]) {
        }else {
            // 123,4(全局_textFieldText1234拼接12345)
            _textFieldText = [_textFieldText stringByAppendingString:string];
        }
        NSLog(@"_textFieldText = %@", _textFieldText);
    }
    return YES;
    
}




1.idTextField.text数字格式化,2.全局变量_textFieldText拼接后格式化

- (IBAction)updateAction:(UIButton *)sender {
    
    if (_isFormatter) {
        // 全局变量_textFieldText(12345)格式化(123,45.00)
        NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        formatter.numberStyle = kCFNumberFormatterDecimalStyle;
        [formatter setMinimumFractionDigits:2];
        [formatter setMaximumFractionDigits:2];
        [formatter setFormatterBehavior:NSNumberFormatterBehaviorDefault];
        NSString *formatterAmount = [formatter stringFromNumber:[NSNumber numberWithDouble:[_textFieldText doubleValue]]];
        self.idTextField.text = formatterAmount;
    }else {
        _isFormatter = YES;
        _istextField = YES;
        // 全局变量_textFieldText 记录idTextField.text(1234)
        _textFieldText = self.idTextField.text;
        NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        formatter.numberStyle = kCFNumberFormatterDecimalStyle;
        [formatter setMinimumFractionDigits:2];
        [formatter setMaximumFractionDigits:2];
        [formatter setFormatterBehavior:NSNumberFormatterBehaviorDefault];
        NSString *formatterAmount = [formatter stringFromNumber:[NSNumber numberWithDouble:[self.idTextField.text doubleValue]]];
        self.idTextField.text = formatterAmount;
        NSLog(@"formatter之后:%@", formatterAmount);
    }
    
}





介绍

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

        formatter.numberStyle = NSNumberFormatterDecimalStyle;

        NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123456789]];

        NSLog(@"Formatted number string:%@",string);

    输出结果为:[1223:403] Formatted number string:123,456,789


enum {
    NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle,
    NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle,
    NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle,
    NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle,
    NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle,
    NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle

    NSNumberFormatterRoundCeiling = kCFNumberFormatterRoundCeiling,//四舍五入,原值2.7999999999,直接输出3 
    NSNumberFormatterRoundFloor = kCFNumberFormatterRoundFloor,//保留小数输出2.8 正是想要的
    NSNumberFormatterRoundDown = kCFNumberFormatterRoundDown,//加上了人民币标志,原值输出¥2.8
    NSNumberFormatterRoundUp = kCFNumberFormatterRoundUp,//本身数值乘以100后用百分号表示,输出280%
    NSNumberFormatterRoundHalfEven = kCFNumberFormatterRoundHalfEven,//原值表示,输出2.799999999E0
    NSNumberFormatterRoundHalfDown = kCFNumberFormatterRoundHalfDown,//原值的中文表示,输出二点七九九九。。。。
    NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp //原值中文表示,输出第三
};

typedef NSUInteger NSNumberFormatterStyle;
各个枚举对应输出数字格式的效果如下:
[1243:403] Formatted number string:123456789
[1243:403] Formatted number string:123,456,789
[1243:403] Formatted number string:¥123,456,789.00
[1243:403] Formatted number string:-539,222,988%
[1243:403] Formatted number string:1.23456789E8
[1243:403] Formatted number string:一亿二千三百四十五万六千七百八十九

其中第三项和最后一项的输出会根据系统设置的语言区域的不同而不同
</pre><pre name="code" class="objc">



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值