我使用的键盘类型: UIKeyboardTypeDecimalPad
两个UITextField
对象。 当试图执行加法,我得到这取决于当前的语言环境不同的结果:
案例1:美国格式:小数点出现.
如预期。 如果我添加12.3(文本字段1)+ 12.3(文本字段2),答案是24.6。 这就是我想要的。 但:
案例2:埃及格式:小数点显示为,
。 如果我重复同样的计算,答案是24小数部分被忽略。 是否有一个修复?
注意:我用[textField.text floatValue]
方法。
由于floatValue
确实非本地化的扫描,它需要一个“美制”。
您可以使用NSScanner对象从一个字符串数值的局部扫描。
请参阅: 字符串编程指南:扫描仪
注意最后一段:
本土化
扫描仪基础上的一些语言环境,它指定的值表示语言和公约的扫描行为。 NSScanner只使用语言环境的定义小数点分隔符(由名为NSDecimalSeparator关键给出)。 您可以通过使用localizedScannerWithString创建与用户的区域设置一个扫描仪:,或明确设置的语言环境中使用的setLocale:。 如果您使用的是没有指定区域的方法,该扫描仪采用缺省的语言环境值。
另请参见: 如何做字符串转换在Objective-C?
例:
NSScanner *scanner = [NSScanner localizedScannerWithString:textField.text];
double mynumber;
if([scanner scanDouble: &mynumber]){
// do something
};
您可以使用:
double number = [[self.myTextField.text stringByReplacingOccurencesOfString:@”,” withString:@”.”] doublevalue];
这是确定所有的语言。
文章来源: Decimal point in UIKeyboardTypeDecimalPad can't be used in mathematical calculation