Ios 简单地将逗号字符串转换为浮点或双精度字符串。

Ios 简单地将逗号字符串转换为浮点或双精度字符串。,ios,objective-c,nsstring,nsnumber,nsnumberformatter,Ios,Objective C,Nsstring,Nsnumber,Nsnumberformatter,我有一个屏幕,用户可以在其中输入一些信息。它显示一个小数点。根据用户的locale,我知道decimalPad将显示逗号或句点,甚至其他内容 因此,我的数据库将包含从用户处存储的NSStrings,尽管其中一些字符串将有逗号,如5.4中的5,4或句点。问题是我需要对这些值进行一些数学运算,但我找不到转换它们的模式 假设NSString有一个逗号,如5,4所示。我可以使用以下方法轻松地将其转换为浮动: NSNumberFormatter *commas = [NSNumberFormatter n

我有一个屏幕,用户可以在其中输入一些信息。它显示一个
小数点
。根据用户的
locale
,我知道
decimalPad
将显示
逗号
句点
,甚至其他内容

因此,我的数据库将包含从用户处存储的
NSStrings
,尽管其中一些字符串将有逗号,如5.4中的5,4或句点。问题是我需要对这些值进行一些数学运算,但我找不到转换它们的模式

假设
NSString
有一个逗号,如5,4所示。我可以使用以下方法轻松地将其转换为浮动:

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,使用这个代码我不会得到正确的结果。即使我得到了用户当前的语言环境,它也帮不了我,因为用户将得到存储在周围的值

不管怎样,我对这个有点困惑。我如何简单地创建一个模式来处理这个问题


我不想使用字符串,就像在
stringbyreplacingoccurrences…
中一样,至少如果我可以避免的话

如果要将该值用作数字,则应将该值作为数字存储在数据库中
NSNumber
是一个完美的对象,使用您的方法可以获得正确的值。当您再次向用户显示该值时,应使用
NSNumberFormatter
再次转换
NSNumber
。其他一切都将是一个变通办法,并产生负面影响。即使使用
stringbyreplacingoccurrences…
您也有可能有人使用千点或逗号…

您不应该为数字格式化程序设置区域设置。让它默认为用户的语言环境,这样它就可以解析用户输入的数字。