Как использовать номер currencyStyle в качестве двойного значения iphone - PullRequest
1 голос
/ 08 апреля 2011

У меня есть рупии с символом валюты в текстовом поле, например: 10 500.50 рупий, и я хочу использовать его в расчете как 10500 * 5.Как я могу использовать это.Когда я пытаюсь преобразовать его в двойное значение, он возвращает 0,00.пожалуйста, предложите.

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 сентября 2015

Осторожно с числами с плавающей запятой !!

Использование 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)

0 голосов
/ 08 апреля 2011

Если вы использовали 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 для анализа строки вручную.

...