使NSNumberFormatter始终将输入的最右边两位数视为小数部分

时间:2013-08-03 23:35:58

标签: ios objective-c cocoa-touch formatting nsnumberformatter

我觉得答案就在我面前,但我似乎找不到它。

我的代码:

- (void)viewDidLoad {

    numFormatter = [[NSNumberFormatter alloc] init];
    numFormatter.locale = [NSLocale currentLocale];
    [numFormatter setMaximumFractionDigits:2];
    [numFormatter setDecimalSeparator:@"."];
    [numFormatter setAlwaysShowsDecimalSeparator:YES];
    [numFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
}

-(void)textFieldDidChange:(UITextField *)textField{

    inputLbl.text = [numFormatter stringFromNumber:[NSNumber numberWithDouble:[dummyTextField.text doubleValue]]];

}

如果用户输入101,当我需要$101.00时,它显示为$1.01,因此输入似乎从小数点开始,当我希望它从小数点的数百点开始时。< / p>

1 个答案:

答案 0 :(得分:2)

NSNumberFormater接收号码,并根据您设置的样式格式化该号码。如果用户输入101,如您所建议的那样,那么一百零一是正在格式化的数字。您已选择货币样式,因此获得$101.00。这个数字仍然是101;它只是格式化为货币金额。

如果您需要$1.01,则必须输入数字1.01。数字格式器不会更改数字。它只是改变了它的显示方式。 1.01是一个数字; $1.01是表示为货币的数字。 1.01不等于101.数字格式化程序不会更改您输入的数字,只是它的显示方式。