ios - 使用NSNumberFormatter格式化小数

标签 ios objective-c nsnumberformatter decimalformat

你好,我需要格式化用户在应用程序中输入的十进制数字。

100.  = 100
90.00  = 90
90.1  = 90.1
90.22 = 90.22
90.227 = 90.23

我应该如何使用NSNumberFormatter实现这一目标。

如果使用其他条件,我使用此自定义达到了相同的效果
if ([cell.textField.text rangeOfString:@"."].location != NSNotFound)
    {
        NSString *strAfterDecimal = [cell.textField.text componentsSeparatedByString:@"."].lastObject;
        NSInteger count = [strAfterDecimal length];

        if(count == 0)
        {
            customField.value = [cell.textField.text
                                 stringByReplacingOccurrencesOfString:@"." withString:@""];
        }
        else if(count == 1 || count == 2)
        {
            if([strAfterDecimal integerValue] > 0)
            {
                customField.value = cell.textField.text;
            }
            else
            {
                customField.value = [cell.textField.text componentsSeparatedByString:@"."].firstObject;
            }
        }
        else if(count > 2)
        {
            if([strAfterDecimal integerValue] > 0)
            {
                customField.value = [NSString stringWithFormat:@"%0.2f",[cell.textField.text floatValue]];
            }
            else
            {
                customField.value = [cell.textField.text componentsSeparatedByString:@"."].firstObject;
            }
        }
    }

我需要检查代码。根据客户的说法,如果苹果提供的默认功能可以执行此操作,则我无法放置其他代码

最佳答案

非常简单

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.maximumFractionDigits = 2;
NSNumber *number = [formatter numberFromString:cell.textField.text];
NSString *numberString =  [formatter stringFromNumber:number];
if (numberString == nil) numberString = @"0";
NSLog(@"%@", numberString);

Swift版本要复杂一些,因为您必须安全地打开可选组件
let formatter = NumberFormatter()
formatter.maximumFractionDigits = 2
let numberString : String
if let text = cell.textField.text,
    let number = formatter.number(from: text),
    let string = formatter.string(from: number) {
    numberString =  string
} else {
    numberString = "0"
}
print(numberString)

关于ios - 使用NSNumberFormatter格式化小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727508/

相关文章:

objective-c - NSStatusItem 右键菜单

ios - 如何让两个 NSManagedObject 类具有相同的父类(super class)

ios - NSNumberFormatter positiveFormat

objective-c - 防止 NSTextField 留空

ios - 我是否仍需要注册远程通知才能在我的应用中启用静默通知?

ios - 如何在 objective-c 中动态创建类别?

iphone - 在这种情况下,ObjC 方法命名约定?

ios - NSNumberFormatter 和 'th' 'st' 'nd' 'rd'(序数)数字结尾

iOS 在 UILabel 中设置文本背景颜色(圆 Angular 矩形)

ios - scrollview 具有不明确的可滚动内容高度和宽度