#iphone #objective-c #ios4 #localization #currency
#iPhone #objective-c #ios4 #локализация #Валюта
Вопрос:
У меня есть рупии с символом валюты в текстовом поле, например, 10 500,50 рупий, и я хочу использовать его при вычислении как 10500 * 5. Как я могу это использовать. когда я пытаюсь преобразовать его в двойное значение, оно возвращает 0.00. пожалуйста, предложите.
Спасибо
Ответ №1:
Если вы использовали NSNumberFormatter для форматирования текстовой строки, вы можете использовать тот же форматер для преобразования текстовой строки обратно в число.
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *rupees = [NSNUmber numberWithFloat:10500.50];
NSString *formattedRupees = [formatter stringFromNumber:rupees];
NSNumber *rupeesFromString = [formatter numberFromString:formattedRupees];
[formatter release];
Если вы не используете NSNumberFormatter, вы могли бы попробовать использовать NSScanner для разбора строки вручную.
Комментарии:
1. Извините за поздний ответ. но я хочу преобразовать 10,500.00 в 10500,00. поэтому я могу использовать в вычислении. пожалуйста, предложите мне как можно скорее. спасибо
2. NSNumber * rupeesFromString = [formatter numberFromString:formattedRupees]; из приведенного выше.
Ответ №2:
Осторожно с числами с плавающей точкой!!
Использование NSNumber *rupees = [NSNUmber numberWithFloat:10500.50];
может вызвать проблемы с точностью преобразования. Число ‘10500,50f’ может сработать, но если вы попробуете что-то вроде 25,63f, это может произойти:
rupees = 25.629999
Вот почему использование чисел с плавающей запятой и удвоений в валютах не рекомендуется.
Переходя к вашему вопросу:
вы можете сделать что-то вроде этого:
NSString *string = @"Rs 10,500.50";
string = [string stringByReplacingOccurrencesOfString:@"," withString:@""];
string = [string stringByReplacingOccurrencesOfString:@"Rs " withString:@""];
NSArray *valueArray = [string componentsSeparatedByString:@"."];
NSInteger firstNumber = [[valueArray firstObject] intValue];
NSInteger secondNumber = [[valueArray lastObject] intValue];
И тогда вы можете использовать оба значения ( firstNumber
и secondNumber
)