Извлекать значения UITextfField и преобразовывать в дюймы с помощью десятичной системы счисления?

#iphone #objective-c #xcode

#iPhone #objective-c #xcode

Вопрос:

Если у меня есть форматирование для текстового поля, например:

 //Formats the textfield based on the pickers.
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

NSString *result = [feetArray objectAtIndex:[feetPicker selectedRowInComponent:0]];

result = [result stringByAppendingFormat:@"%@ft", [feetArray objectAtIndex:[feetPicker selectedRowInComponent:1]]];
result = [result stringByAppendingFormat:@" %@", [inchArray objectAtIndex:[inchesPicker selectedRowInComponent:0]]];
result = [result stringByAppendingFormat:@"%@", [inchArray objectAtIndex:[inchesPicker selectedRowInComponent:1]]];
result = [result stringByAppendingFormat:@" %@in", [fractionArray objectAtIndex:[fractionPicker selectedRowInComponent:0]]];

myTextField.text = resu<
}
  

Какой дисплей в текстовом поле похож на 00ft 00 0/16in Как я могу изменить все это на дюймы с десятичной дробью? Мне нужно будет взять фут и умножить на 12 = переменная.Затем добавьте это к дюймам, а также возьмите мою дробь 1/16 и разделите ее на 16, чтобы получить мое десятичное значение, а затем добавьте это к дюймам, чтобы получилось 1234.0625, чтобы произвести мои вычисления. Кто-нибудь может мне помочь в этом? Заранее благодарю вас!

Ответ №1:

 NSString * theString = RiseTextField.text;
NSString * feetString = [theString substringWithRange:NSMakeRange(0, 2)];
NSString * inchesString = [theString substringWithRange:NSMakeRange(5, 2)];
NSUInteger rangeLength = ([theString length] == 14) ? 1 : 2;
NSString * fractionString = [theString substringWithRange:NSMakeRange(8, rangeLength)];

double totalInInches = [feetString doubleValue] * 12   [inchesString doubleValue]   [fractionString doubleValue] / 16;
  

Комментарии:

1. Прямо сейчас я получаю значение текстового поля, подобное этому double a = [[RiseTextField text] doubleValue]; Я предполагаю, что мне нужно как-то теперь вызвать totalInInchesString ??

2. Вот так: double a = [totalInInchesString floatValue]; ?

3. Похоже, вы получаете это от сборщиков… Я не получаю значение для его отображения, я хочу установить его в переменную… все в дюймах с десятичной дробью

4. Хорошо, я подключил его к ярлыку, просто чтобы увидеть выходные данные, и он вообще не отображает десятичную дробь.

5. Отредактировал его, чтобы получить значение из RiseTextField .

Ответ №2:

Вы можете легко получить нужное вам число, выполнив вычисления с имеющимися у вас там числами. Как только вы получите фактическое число, вам следует использовать NSNumberFormatter, чтобы представить его с желаемым количеством десятичных знаков и форматом.

Это должно решить вашу проблему. Или вам нужна помощь в преобразовании строк в числа, чтобы вы могли складывать их вместе?

Комментарии:

1. Ну, изначально у меня было так, что я вводил десятичные значения в текстовое поле, мне это не понравилось, поэтому я изменил ввод на средства выбора, чтобы я мог заставить пользователя вводить только то, что я хотел, вместо форматирования моей собственной клавиатуры. Итак, у меня уже есть функция для преобразования десятичной системы счисления в дробную после вычисления, но теперь мне нужно преобразовать дробь в десятичную перед вычислением. Итак, я думаю, мне действительно нужно преобразовать все в дюймы с десятичной дробью, правильно звучит?

2. Или не могли бы вы привести пример NSNumberFormatter с моим 00ft 00 0/16in ?