2013-08-03 2 views
0

Я чувствую, что ответ прямо перед моим лицом, но я не могу найти его.Сделать 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 поэтому вход, кажется, начинается после десятичной точки, когда я хочу начать в сотни точки знаков после запятой.

+0

Вы имеете в виду, что хотите всегда обрабатывать последние две цифры как дробную часть? Что делать, если входной сигнал меньше трех цифр? –

+0

Да. Если было меньше 3, скажем, что они вводят только «1», тогда я хочу, чтобы результат был «0.01» –

+3

... разделите на 100 перед форматированием? –

ответ

2

NSNumberFormater занимает в число и форматы этого числа в соответствии с какой бы стиль вы установили. Если пользователь вводит 101, как вы предлагаете, то сто один - это число, отформатированное. Вы выбрали стиль валюты, поэтому получите $101.00. Число все равно 101; он просто форматируется, чтобы выглядеть как сумма валюты.

Если вы хотите $1.01, вам нужно будет ввести номер 1.01. Номер форматирования не изменить номер. Он просто меняет способ отображения. 1.01 - число; $1.01 - это число, представленное в виде валюты. 1.01 не равно 101. Формат форматирования не изменяет введенный вами номер , как он отображается.