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…
您也有可能有人使用千点或逗号…您不应该为数字格式化程序设置区域设置。让它默认为用户的语言环境,这样它就可以解析用户输入的数字。