【问题标题】:NSNumberFormatter to add and remove decimalsNSNumberFormatter 添加和删除小数
【发布时间】:2026-02-04 12:10:01
【问题描述】:

处理整数、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 ?

【问题讨论】:

    标签: ios decimal nsnumberformatter


    【解决方案1】:

    使用 -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
    

    【讨论】:

    • 谢谢,看来我已经很接近了,但只是没有想到这个组合。非常感谢,非常有用:)