NSNumberFormatter添加和删除小数

时间:2013-12-04 21:38:49

标签: ios decimal nsnumberformatter

如何处理整数,NSStrings和NSNumberFormatter的最佳方法是什么?

我有一个带有UITextField的应用程序,用户可以在其中输入数字。通过UITextField中的每次更改,我的应用程序立即获取输入,将其放入我的计算函数中,并将结果输出到UILabel中。

人们可以在这里使用大数字,所以为了让他们更容易阅读他们的输入,我决定让它成为可能,以便输入在插入后立即改变。

例如,当您键入1000时,它会自动更改为1,000。当您输入100000000000时,它会自动更改为100,000,000,000等。

我能做到这一点,就像这样:

formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
self.inputField.text = [formatter stringFromNumber:[formatter numberFromString:self.inputField.text]];

也许不是最好的方式,但它有效。

我的函数需要一个int作为输入,所以直到999它很容易:我可以执行以下操作:

[self.inputField.text integerValue];

并且有效

但是每当我的UITextField中有1000或更高时,self.inputField.text属性将为1,000 ..然后使用integerValue就会出错。

所以我的问题是,如果有小数,我怎样才能从NSString返回到int?

1 个答案:

答案 0 :(得分:2)

使用-numberFromString函数从字符串中获取NSNumber,然后使用NSNumber类中的intValue来获取整数值:

NSString *string = @"1,000";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *number = [formatter numberFromString:string];
int intValue = [number integerValue];// intValue = 1000