2012-10-16 68 views
0
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正确字符串转换为Double外币

你如何可靠地转换从字符串到双精度值 注意,文本字符串可能会或可能不会对当地货币符号($如上所示) 但应该有转换

在此先感谢

回答

0

试试这个:

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

1

试试这个:

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]; 
0
extension String { 
/// Creates a Double from the string 
/// 
/// Tries various ways of extracting a number, currently handling the following formats 
/// - 1000 
/// - 1000.00 
/// - 1,000.00 
/// - $1,000.00 
/// 
/// - Returns: Double value, or 0.0 if a non numerical String is passed 
    func asDouble() -> Double { 

    if let double = Double(self) { 
     return double 
    } 

    let formatter = NumberFormatter() 
    if let number = formatter.number(from: self) { 
     return number.doubleValue 
    } 

    formatter.numberStyle = .currency 
    if let number = formatter.number(from: self) { 
     return number.doubleValue 
    } 

    formatter.currencySymbol = "" 
    formatter.internationalCurrencySymbol = "" 

    if let number = formatter.number(from: self) { 
     return number.doubleValue 
    } 

    return 0 
    } 
} 
相关问题