我有一个屏幕,用户可以在其中输入一些信息。它显示了一个 decimalPad
。根据用户 locale
,我知道 decimalPad
将显示 comma
或 period
,甚至其他内容。
因此,我的数据库将包含从用户存储的 NSStrings
,尽管其中一些会有逗号,如 5,4 或句点,如 5.4 中所示。问题是我需要对这些值进行一些数学运算,但找不到转换它们的模式。
假设 NSString
有一个逗号,如 5,4 所示。我可以使用以下方法轻松地将其转换为 float
:
NSNumberFormatter *commas = [NSNumberFormatter new];
commas.numberStyle = NSNumberFormatterDecimalStyle;
NSLocale *commaLocale = [[NSLocale alloc] initWithLocaleIdentifier: @"br_PT"];
commas.locale = commaLocale;
NSString *string = @"5,4";
float testFloat = [[commas numberFromString:string] floatValue];
我正确地得到了结果 5.4,并且可以继续我的数学计算。但是,例如,如果美国用户保存了该号码,则 NSString
将为 5.4,使用此代码我将无法获得正确的结果。即使我获得了用户当前的语言环境,也无济于事,因为用户将获得存储在各处的值。
无论如何,我对此有点困惑。我怎样才能简单地创建一个模式来处理这个问题?
我不想像在 stringByReplacingOccurences...
中那样使用字符串,无论如何,至少如果我能避免的话。
最佳答案
如果您想将该值用作数字,则应将该值作为数字存储在您的数据库中。 NSNumber
是一个完美的对象,使用您的方法可以获得正确的值。当您再次向用户显示该值时,您应该使用 NSNumberFormatter
再次转换 NSNumber
。其他一切都将是一种解决方法,并会产生负面影响。即使使用 stringByReplacingOccurences...
,您仍面临有人使用千点或逗号的风险...
关于ios - 简单地将带逗号的 NSString 转换为 float 或 double。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336158/