Преобразовать строку в двойную с валютой

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter   setNumberStyle: NSNumberFormatterCurrencyStyle];
    double value = [[numberFormatter  numberFromString: ProviderTripRate.text] doubleValue];
    [User setDouble:value forKey:@"Trip_Rate"];
NSLog(@"     %@                  %f     " , ProviderTripRate.text  ,   value  );

Если данные внутри ProviderTripRate.text равны 2,75, то значение 0 неверно. Если данные внутри ProviderTripRate.text равны 2,75 доллара, тогда значение 2,75 верно

Как надежно преобразовать строку в двойное значение. ПРИМЕЧАНИЕ. Текстовая строка может иметь или НЕ иметь символ местной валюты ($, как показано выше), но она всегда должна преобразовываться

заранее спасибо


person BarryF    schedule 16.10.2012    source источник


Ответы (2)


Попробуй это:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSNumber* number = [numberFormatter  numberFromString:ProviderTripRate.text]
if (!number) {
    [numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
    number = [numberFormatter  numberFromString:ProviderTripRate.text];
}
double value = [number doubleValue];
person Felix    schedule 16.10.2012

Попробуй это:

if ([providerTripRate.text hasPrefix:@"$"]) {
    // use NSNumberFormatter to obtain the value
} else {
    float theValue = [providerTripRate.text doubleValue];
}

и т.п.

person Community    schedule 16.10.2012