我使用键盘类型:UIKeyboardTypeDecimalPad
用于两个UITextField
个对象。
尝试执行添加时,根据当前区域设置得到不同的结果:
案例1:美国格式:小数点按预期显示为.
。如果我添加12.3(文本字段1)+ 12.3(文本字段2),答案将是24.6。这就是我想要的。但是:
案例2:埃及格式:小数点显示为,
。如果我重复相同的计算,答案将是24.小数部分被忽略。有解决方法吗?
注意:我使用了[textField.text floatValue]
方法。
答案 0 :(得分:5)
由于floatValue
执行非本地化扫描,因此需要“美国格式”。
您可以使用NSScanner对象对字符串中的数值进行本地化扫描。
请参阅:String Programming Guide: Scanners
注意最后一段:
<强>本地化强>
扫描程序将其部分扫描行为基于区域设置 指定值表示的语言和约定。 NSScanner仅使用区域设置的小数分隔符定义 (由名为NSDecimalSeparator的密钥给出)。您可以创建扫描仪 使用localizedScannerWithString:或用户的语言环境设置 使用setLocale明确的语言环境:如果你使用的方法 如果未指定语言环境,则扫描程序将采用默认语言环境 值。
另请参阅:How to do string conversions in Objective-C?
示例:
NSScanner *scanner = [NSScanner localizedScannerWithString:textField.text];
double mynumber;
if([scanner scanDouble: &mynumber]){
// do something
};
答案 1 :(得分:0)
您可以使用:
double number = [[self.myTextField.text stringByReplacingOccurencesOfString:@”,” withString:@”.”] doublevalue];
这适用于所有语言。